[운영체제/OS] 프로세스 Process

HAEN·2022년 12월 19일

CS/OS

목록 보기
2/5

1. Process Model

(1) 프로세스(process): 실행 중인 프로그램

  • 각 프로세스는 자신의 주소 공간(address space)를 가짐
  • 각 프로세스는 프로그램 실행에 필요한 모든 정보를 가짐

(2) 멀티 프로그래밍(multi programming): CPU가 여러 프로세스 사이를 빠르게 전환하는 것
-> CPU가 여러 프로세스를 동시에 실행하는 것처럼 보이지만 어느 한 순간에는 하나의 프로세스만 수행 중임

2. Process States

(1) 프로세스 상태

  • 실행(running): 그 순간 실제로 CPU를 사용
  • 준비(ready): 실행 가능하지만 다른 프로세스가 실행될 동안 일시적으로 정지(사용 가능한 CPU가 없음)
  • 대기(blocked): 외부 이벤트가 발생할 때까지 실행 불가

    (2) 운영체제 계층 구조: 가장 하위 계층에는 스케줄러이며, 그 위에 다수의 프로세스가 존재

3. Process Hierarchies

(1) UNIX 프로세스 계층: 부모 프로세스는 자식 프로세스를 생성할 수 있음
-> 부모 프로세스는 1개, 자식 프로세스는 여러 개 존재 가능

(2) Windows 프로세스 계층 구조: 계층 구조가 존재하지 않고 모든 프로세스가 동등함

(3) 계층 구조를 통한 보안

  • 시스템 관리자는 시스템 사용 권한이 있는 각 사용자에게 UID(User Identification)을 부여
  • 각 프로세스는 그 프로세스를 시작한 사용자의 UID를 가지며, child 프로세스들은 parent 프로세스의 UID를 가짐
  • 사용자들이 특정 그룹에 속해 있다면 각 그룹은 GID(Group Identification)을 가짐
  • UNIX에서는 superuser라는 UID가 존재하며 보호에 관한 규정들을 어길 수 있음


4. Process Table

(1) process table(process control block): 운영체제가 프로세스를 구현하기 위해 각 프로세스마다 유지하는 하나의 엔트리가 존재하는 table
(2) 용도: 엔트리는 프로세스 상태에 중요한 모든 정보를 포함하고 있어 프로세스가 재시작될 때 중단된 적 없는 것처럼 재시작이 가능함


5. Process Creation/Termination

(1) 프로세스 생성: 기존 프로세스가 프로세스 생성 system call을 불러 새로운 프로세스를 생성함

(2) 프로세스가 생성되는 경우

  • 시스템 초기화(부팅)
  • 실행 중인 프로세스가 새로운 프로세스를 생성
  • 사용자의 요청
  • 배치 작업의 시작

(3) 프로세스 종료 조건

  • 정상적인 종료(자발적)
  • 오류 종료(자발적)
  • 치명적인 오류(비자발적)
  • 다른 프로세스에 의해 종료(비자발적)

6. System Calls for process Management(POSIX)

(1) fork(): 현재 프로세스의 복사본을 생성함

  • parent 프로세스는 child 프로세스의 PID를 반환
  • child 프로세스는 0을 반환

(2) waitpid(pid_t pid, int *statloc, int options): 프로세스의 종료 상태를 리턴, 특정 child 프로세스의 종료를 기다릴 수 있음

(3) execve(const char filename, char const argv[], char *const envp[]): 프로세스의 코어 이미지를 대체

(4) exit(): exit status를 반환


profile
핸수

0개의 댓글