2023.07.29 - [컴퓨터 공학/운영체제] - [혼공컴운] chapter.09 운영체제 시작하기
10-1 프로세스 개요
- 프로세스 종류
- 포그라운드 프로세스(forground process): 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- 백그라운드 프로세스(background process): 사용자가 볼 수 없는 공간에서 실행되는 프로세스
- 데몬(demon): 유닉스 체계의 운영체제에서 백그라운드 프로세스를 부르는 명칭.
- 서비스(service): 윈도우 운영체제에서 백그라운드 프로세스를 부르는 명칭.
- 프로세스 제어 블럭(PCB. process control block)
: 프로세스와 관련된 정보를 저장하는 자료 구조. 프로세스를 식별하기 위한 정보들이 포함된다.- 프로세스 ID(PID. process ID)
: 프로세스를 식별하기 위해 부여하는 고유한 번호. - 레지스터 값
: 자신의 실행상태가 돌아왔을 때 이전에 사용했던 레지스터 값을 복원하는데 필요한 값.
ex) 프로그램 카운터 - 프로세스 상태
: 현재 프로세스의 상태를 기록. - CPU 스케줄링 정보
: 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보. - 메모리 관리 정보
: 프로세스가 어느 주소에 저장되어 있는지에 대한 정보.
ex) 페이지 테이블 - 사용한 파일과 입출력장치 목록
: 프로세스가 실행 과정에서 특정 입출력장치나 파일을 사용할시 명시됨.
- 프로세스 ID(PID. process ID)
- 문맥 교환
: 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것.
- 문맥: 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보.
문맥 교환이 매우 빠르게 이루어져 사람의 눈에는 여러 프로세스들이 동시에 실행되는 것 처럼 보임.
문맥 교환이 너무 자주 일어나면 오버헤드 시간이 길어지는(혹은 메모리) 문제 발생.
*오버헤드(overhead): 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 혹은 메모리. - 프로세스의 메모리 영역
- 코드 영역(code segment)
: 실행할 수 있는 코드(기계어로 이루어진 명령어)가 저장됨. 쓰기 금지공간. Read-only 공간.
텍스트 영역(text segment)라고도 함. 정적 할당 영역. - 데이터 영역(data segment)
: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간.
전역변수 등이 저장됨. 정적 할당 영역. - 힙 영역(heap segment)
: 프로그래머가 직접 할당할 수 있는 저장 공간. 동적 할당 영역.
* 직접 할당할 시에 메모리 누수 주의! - 스택 영역(stack segment)
: 데이터를 일시적으로 저장하는 공간. 지역 변수 등이 저장됨. 동적 할당 영역.
* 일시적으로 저장될 데이터는 스택 영역에 PUSH로 저장. 필요하지 않은 데이터는 POP으로 삭제.
- 코드 영역(code segment)
10-2 프로세스 상태와 계층 구조
- 프로세스 상태
- 생성 상태(new)
: 프로세스를 생성 중인 상태
생성 상태를 거친 프로세스는 곧바로 실행 상태가 되지 않고 준비 상태가 되어 CPU 할당을 기다림. - 준비 상태(ready)
: CPU를 할당받아 실행할 수 있지만, 자신의 차례를 기다리고 있는 상태
* 디스패치(dispatch): 준비 상태인 프로세스가 실행 상태로 전환되는 것 - 실행 상태(running)
: CPU를 할당받아 실행 중인 상태. 할당된 일정 시간 동안만 CPU 사용 가능. - 대기 상태(blocked)
: 프로세스가 실행 도중 입출력장치를 사용하는 경우에 입출력장치의 작업을 기다리는 상태.
입출력 작업이 완료되면 해당 프로세스는 다시 준비 상태로 CPU 할당을 기다림. - 종료 상태(terminated)
: 프로세스가 종료된 상태. 운영체제는 프로세스의 PCB와 메모리를 정리함.
- 생성 상태(new)
- 프로세스 계층 구조
- 부모 프로세스(parent process): 새 프로세스를 생성한 프로세스
- 자식 프로세스(child process): 부모 프로세스에 의해 생성된 프로세스
* 자식 프로세스에는 부모 프로세스의 PID인 PPID(parent PID)가 기록되기도 함.
* 최초의 프로세스
- 유닉스 운영체제: init
- 리눅스 운영체제: systemed
- mac OS: launchd
- 프로세스 생성 기법
- fork()
: 부모 프로세스가 자식 프로세스로 자신의 복사본을 생성하는 시스템 호출. - exec()
: 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출.
- fork()
10-3 스레드
- 프로세스와 스레드
- 스레드(thread): 프로세스를 구성하는 실행의 단위.
- 단일 스레드 프로세스: 한 번에 하나의 스레드가 실행되는 프로세스.
- 멀티 스레드 프로세스: 한 번에 여러 스레드가 동시에 실행되는 프로세스.
* 스레드는 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행된다.
- 멀티프로세스와 멀티스레드
- 멀티프로세스(multiprocess): 여러 프로세스를 동시에 실행하는 것
- 멀티스레드(multithread): 여러 스레드로 프로세스를 동시에 실행하는 것
- 멀티프로세스와 멀티스레드의 차이점
: 프로세스끼리는 자원을 공유하지 않지만 스레드끼리는 같은 프로세스 내 자원을 공유함.
* 같은 작업을 하는 동일한 프로세스 두 개
→ 모든 자원이 복제되어 메모리에 저장. 즉 PID, 메모리 주소를 제외한 모든 것이 동일한 프로세스가 메모리에 저장되어있는 상태 => 메모리 낭비!
* 같은 작업을 하는 동일한 스레드 두 개
→ 프로세스가 가지고 있는 자원 공유. 여러 프로세스를 병행하는 것 보다 메모리를 효율적으로 사용 가능.
=> BUT, 하나의 스레드에 문제가 생기면 프로세스 전체에 문제 발생!
* 프로세스 간 통신(IPC. inter-process communication)
: 프로세스는 기본적으로 자원을 공유하지 않지만 프로세스 간의 자원을 공유하고 데이터를 주고 받도록 하는 것.
* 오류 지적은 환영입니다.^^*
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
[혼공컴운] chapter.13 교착 상태 (0) | 2023.08.13 |
---|---|
[혼공컴운] chapter.12 프로세스 동기화 (1) | 2023.08.13 |
[혼공컴운] chapter.09~11 확인문제 (1) | 2023.07.30 |
[혼공컴운] chapter.11 CPU 스케줄링 (1) | 2023.07.29 |
[혼공컴운] chapter.09 운영체제 시작하기 (0) | 2023.07.29 |