이번에 팀 프로젝트로 웹 서비스를 개발하면서, API에 대한 지식이 필요하다고 느껴 공부해본 바를 적고,실제 팀 프로젝트에서 어떻게 활용했는지 기록함API의 정의API는 Application Programming Interface의 줄임말로, 두 어플리케이션의 구성 요소가 서로 통신할 수 있게 하는 메커니즘.인터페이스는 두 어플리케이션 간의 서비스 계약이라고 보면됨.즉, 두 어플리케이션이 서로 통신하는 방법을 정의하고, API문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 있다.클라이언트와 서버API는 일반적으로 클라이언트와 서버 측면에서 설명됨.요청을 보내는 쪽을 Client, 응답을 보내는 쪽을 Server라고 한다.REST APIAPI의 4가지 작동 방식 중 하나이다.Repres..
개강한지 엊그제 같은데, 벌써 종강, 그리고 거진 2주가 흘렀다.. 2학년 2학기 학점 4점대를 맞고, 자신감이 넘쳤는데ㅋ.ㅋ 이번 학기 학점은 처참하다. 그래도 좋아하는 과목, OS, Linux System Programming은 뭐 괜찮다. 방학 동안 할게 참 많은데 다 할 수 있을지 의문이다. 매 학기, 방학마다 할 것들을 적어놓고 벌써부터 무언가를 이룬듯 설레발치지만 결국 똑같다. 너무 게으르다 그래서 애초에 목표를 낮게 잡기로 정했다. 공학경진대회 준비, C++(코테준비), 시스템프로그래밍 복습 정도? (아마 자료구조 전부 구현해보기도 해야할 듯..) 이것도 많은가? 공학경진대회를 준비하며, 요즘 React JS를 공부중 인데(의도치 않게 front end를 맡게됨..) 어떻게 프로젝트를 구조화..
컴파일 과정프로그래머가 코드를 작성하면 컴파일러는 .exe(실행파일)을 만들어 낸다.그 과정은 이렇다.코드 작성 : 프로그래머가 c코드를 작성.전처리(Preprocessing) : 전처리기 처리컴파일(Complie) : C컴파일러가 작동하여, C코드를 어셈블리어로 변환어셈블(Assembling) : 어셈블러가 .obj(목적파일)을 생성링킹(Linking) : 링커가 라이브러리의 .obj(목적파일)을 다른 .obj파일과 결합해 실행파일 생성여기서 볼 구간은 링킹구간이다.예를 들어, 다음과 같은 간단한 C코드가 있다고 가정해보자.#include int main(void){ printf("hello world!\n"); return 0;}이 코드에서 stdio.h라는 헤더 파일을 전처리 한다(헤더파..
OS와 인터럽트 Interrupt 인터럽트만 장치들이 어떤 상황이 발생했음을 CPU에게 알리는 하드웨어적 방법. 인터럽트 발생시 하던 작업을 멈춤 돌아올 주소를 저장 해당되는 ISR()을 실행 ISR()끝나면, 하던 작업을 마저함 인터럽트 종류 하드웨어적 : 입출력 장치들이 전기적 신호를 CPU에게 보냄 소프트웨어적 : 프로그램 내에서 CPU기계명령으로 인터럽트 과정 진행 인터럽트 제어기 인터럽트가 처리되려면, CPU와 인터럽트 제어기들의 하드웨어가 협력해야함. CPU와 입출력 장치 사이에 APIC(인터럽트 제어기)가 사용되며 APIC는 입출력 장치로부터 직접 인터럽트 신호를 받는 I/O APIC장치와 I/O APIC로부터 인터럽트 정보를 받아 CPU핀에 직접 인터럽트 신호 발생시키는 Local APIC..
Kernel의 실체 커널은 컴파일된 바이너리 형태로 스토리지에 있다가 컴퓨터 부팅 시에 메모리에 load된다. 커널 코드는 함수들의 집합 커널 코드는 함수들의 집합이다. 실행 중인 응용 프로그램(메모리에 적재된)을 프로세스라 부른다. 하지만 커널은 프로세스가 아니다. 만약, app2의 실행중에 System Call을 유발시키고 커널이 동작한다고 가정해보자. 그러면 User mode에서 실행중이다가 kernel mode로 바뀌고 kernel code를 실행한다. 여기서 kernel이 프로세스가 되는게 아닌, app2가 프로세스이다. 커널은 프로세스가 아니다. Kernel이 실행중? kernel은 단지 응용 프로그램에 의해 System Call, interrupt가 발생하여 커널 코드가 실행되고 있을 뿐 K..
User mode, Kernel mode CPU는 User mode, Kernel mode 2가지 중 한 모드에서 동작한다. 어떤 모드로 동작할 것인지는 CPU내의 mode register에서 결정한다. 응용 프로그램은 user mode에서, 커널 코드는 kernel mode에서 동작한다. User mode User mode에서는 User Space만 접근할 수 있다. 만약, Kernel Space에 접근하게 되면 오류를 발생시킨다. User mode에서는 어떤 하드웨어에도 접근할 수 없다. 또 다른 응용 프로그램에게 할당된 메모리에도 접근할 수 없다. 특권 명령(privileged instruction)도 실행할 수 없다. Kernel mode kernel mode 에서는 모든 메모리 공간 접근가능하며..