한 프로세스는 다른 프로세스의 변수나 자료구조에 접근이 불가능 하다. 오직 통신을 통해서만 접근 가능.(파이프, 파일, 소켓..)
프로세스 제어 블록(Process Control Block, PCB)
특정 프로세스의 정보를 저장하고 있는 커널 내의 자료구조
OS는 프로세스를 관리하기 위해 프로세스와 함께 PCB를 생성하여 관리한다.
프로세스는 CPU를 할당받아 작업을 처리하다 Switch 발생 시 진행중인 작업을 저장하고 할당받은 CPU를 반환한다. 이때 작업상황을 PCB에 저장하고 다시 CPU를 할당 받았을 때 저장한 내용을 PCB로 부터 받아와 작업을 진행함.(Paging기법 , Context switch 참고)
PCB에 저장되는 정보
프로세스 식별자(Process ID, PID): 프로세스 식별 번호 (OS가 참조하는 FK라 생각하면 좋음)
프로세스 상태: New, Ready, Running, Waiting, Terminated 등의 상태 저장
프로그램 카운터(Program Counter, PC): 다음에 실행할 명령어의 레지스터 내 주소 저장
CPU 레지스터 정보: CPU 레지스터 내 저장되어 있는 정보 저장
CPU 스케쥴링 정보: 프로세스의 우선순위, 스케쥴 큐에 대한 포인터 등..
메모리 관리 정보: 페이지 또는 세그먼트 정보 저장
입출력 상태 정보: 프로세스에 할당된 입출력 장치들과 열린 파일 목록
어카운팅 정보: 사용된 CPU 시간, 시간 제한, 계정 번호 등...
프로세스 테이블(Process Table)
CPU가 멀티태스킹을 위해 Process간 context switch가 가능하도록 하기 위해 꼭 필요한 정보를 담은 Table
각 PCB는 Process Table안에 Entry 단위로 저장된다. Context switch는 entry단위 간의 switching이 발생하는 것.