예시를 통하여 알기 쉽게 Process API 세 가지를 우선 알아볼 것이다. 아래는 LINUX나 net과 같은 unix계통의 운영체제에서 돌아가는 코드 예시이다. 이러한 unix계통의 운영체제는 새로운 프로세스를 만들 때 fork()라는 api를 사용한다. (SYSTEM CALL의 종류) 위 예시는 p1.c라는 프로그램을 fork라는 함수(시스템 콜)을 호출하여 새로운 프로세스를 생성한다. 프로그램이 직접 새로운 프로세스를 생성할 순 없기 때문에 프로그램이 fork()를 호출하면 제어권이 운영체제로 넘어가고 운영체제 안의 시스템콜 sys_fork()함수가 실행되어 프로세스를 생성하는 것이다. unix 시스템에서는 새로운 프로세스를 만들 때 완전히 새로운 것을 만드는게 아니라 fork라는 시스템콜을 호출..
프로세스의 실행 과정 소스코드를 컴파일하면 실행파일exe이 나옴 >> 이 exe파일은 디스크에 code와 data부분으로 나눠져서 저장됨 >> 프로그램을 실행하면 디스크에서 메모리로 프로그램이 복사되고, 프로세서는 메모리의 명령어를 cpu의 레지스터로 복사하여 실행된다. 이렇게 프로세서는 주로 메모리와 레지스터로 구성된다. 프로세스를 쉽게 다룰 수 있게 해주는 api들이 있다. 그 중 새로운 프로세스를 만드는 api Create가 실행되는 과정에 대해 알아보자. 1. 디스크에 있던 프로그램 코드를 메모리(address sapce)에 복사한다. 2. 운영체제는 프로세스의 원활한 실행을 위해서 프로세스가 실행 될 때 stack을 할당해준다. 스택은 함수의 실행이 끝나면 소멸되는 지역변수, 함수의 입력값으로 ..
운영체제의 초기에는 단지 자주 사용되는 함수들을 모아놓은 라이브러리에 불과했다. 오늘날 운영체제가 담당하는 일들을 옛날엔 컴퓨터 관리자가 프로그램을 모아서 한번에 실행하는 것으로 그 역할을 담당했다. 당시 컴퓨터는 비용이 너무 비싸서 오늘날의 대화방식(interactive)을 사용할 수 없었고, 대신 값싼 일괄처리방식(batch)를 사용했다. (메인 프레임 시대) 이렇게 여러 프로그램을 동시에 처리하는 도중 모든 프로그램이 디스크의 원하는 위치를 읽을 수 있다면 개인정보의 보호가 불가능해진다. 이로 인한 해결책으로 시스템 콜이라는 아이디어가 발명됐다. 운영체제와 일반 라이브러리가 구분되는 사건이다. 시스템 콜과 함수 호출의 결정적 차이는 시스템 콜은 제어를 운영체제에게 넘길 때 하드웨어 특권 수준을 상향..