| 프로세스는 OS 관리의 단위이다.
먼저, 프로그램, 프로세스, 테스크의 구분.
프로그램(.exe) 를 실행했을 때, 실행의 인스턴스가 프로세스이다.
프로그램이 프로세스화 해서 실행된다.
작업관리자를 보면, PID 가 있는데, ProcessID 가 있다.
chrome.exe 가 실행되는데 여러개의 프로세스가 실행되며 각 프로세스는 고유의 PID를 가진다.
이를 개념적인 표현으로 Task(프로그램을 위해 작동되는 프로세스)라고 한다.
chrome 처럼 여러개 프로세스가 작동되면 multitask가 되는 것이다.
| 프로세스란, 실행되는 프로그램의 실행 단위이다.
프로그램이 실행되려면, CPU에서 해당 프로그램이 실행될 수 있는 자원을 할당 받아야 한다.(이는 운영체제에 따라서 할당 받는다.) 이 때, 프로그램이 할당 받는 단위가 프로세스 인 것이다.(할당된 메모리의 독점권을 주고 고유값을 주는 것이 PID 이다.)
프로세스 내에서 실행되는 가장 작은 실행 단위이다.(프로세스 내의 연산을 말한다.) 프로세스는 최소 1개의 쓰레드를 갖는다.
프로세스 내에서 연산이 쭉 진행 될 때 이를 프로세스 내부의 연산 flow가 있다! 라고 한다. 이 연산을 쓰레드라고 한다.
RAM을 페이지 단위로 잘라서 분배 + 하드디스크 공간의 가상 메모리 공간이 연결되어 메모리 공간이 형성된다. -> 이부분은 정확하지 않음...
OS는 가상 메모리 공간을 프로세스에 할당해주는데, 프로세스에 속한 모든 쓰레드는 프로세스의 가상 메모리로 공간이 제약된다.
각 쓰레드 마다 연산을 처리하므로, 쓰레드 마다 TLS(Thread Local Storage)를 프로세스 내에서 할당 받아서 연산을 처리하는 것이다.
PCB = Process Control Block
OS가 프로세스에 파일이나 디렉토리에 접근 권한이 있는지 통제하는 것이다.
예를들어, File I/O 기능의 프로세스 일 때, 파일에 rwx 권한에 대한 통제이다.
TCB = Thread Control Block
Block은 구조체 라고 보면 된다.
쓰레드는 프로세스에 부여된 자원과 권한에 대해서 모두 접근할 수 있다.
프로세스의 자원이 남아서 쓰레드를 새로 생성했을 때, 해당 프로세스의 자원과 권한을 사용할 수 있는 쓰레드가 생성된다. 이 때에 TCB로 스케줄러에 등록해야한다.(그때 그때 대응하면 위의 과정을 거쳐야 하므로 연산이 필요한 과정이라서 느려진다...malloc 연산 처럼 되므로..쓰레드 생성부하가 발생한다.)
따라서, 게임 서버 같은 데에서 많이 사용하는 방법은 하나의 프로세스에 수많은 클라이언트들이 접속할 때 이에 대응하기 위한 코드를 작성해두는데, 이런 경우 미리 쓰레드를 생성해두어 대응한다.