티스토리 뷰
프로세스 상태
#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define TASK_ZOMBIE 4
#define TASK_STOPPED 8
프로세스 구조
- 코드(.text) : 프로그램의 코드(명령어)가 저장된 영역
- 데이터(.data) : 초기화된 데이터가 저장된 영역
- 데이터(.bss) : 초기화되지 않은 데이터가 저장된 영역
- 힙(heap) : 동적으로 할당된 데이터 영역
- 스택(stack) : 프로그램이 실행되는 과정에서 일시적인 데이터를 저장하기 위해 LIFO(Last-In First_Out) 방식으로 관리되는 영역.
프로세스 제어 블록(PCB: Process Control Block)
- 아주 많은 종류의 정보를 가지고 있다.
- 문맥교환의 오버헤드(overhead)가 크다.
- 프로세스마다 고유의 PCB가 요구된다.
커널 스택
- 프로세스의 커널 스택과 사용자 스택은 별도로 존재
- 사용자 모드에서 실행되는 동안에는 사용자 스택을 사용하고, 커널 모드에서는 실행되는 동안에는 커널 스택을 사용
- 모든 프로세스마다 자신의 커널 스택이 필요하다.
- 커널 스택은 프로세스 구조체와 함께 유지(8KB).
프로세스 생성
- 시스템 호출 함수 fork()를 사용
- 부모 프로세스와 동일한 이미지의 자식 프로세스를 생성
- 프로세스는 PID로 구별
- 부모 프로세스의 반환값은 자식의 PID, 자식 프로세스의 반환값 0
- 자식 프로세스는 프로그램의 fork() 다음 명령부터 시작된다.
'cs > operating system' 카테고리의 다른 글
[운영체제/OS] 임계 영역(critical section) (0) | 2021.04.02 |
---|---|
[운영체제/OS] 결정성, 생산자/소비자 프로세스, 경쟁 조건 (0) | 2021.04.02 |
[운영체제/OS] 프로세스 스케줄링 (선점/비선점) (0) | 2021.03.28 |
[운영체제/OS] 스래드 정의, 단일/다중 스래딩, 프로세스와 비교, 스래드 생성 (0) | 2021.03.26 |
[운영체제/OS] 프로세스 정의, 상태, 주소 영역, 문맥 교환, PCD, 생성/종료 (0) | 2021.03.26 |