프로세스란?
- 실행 중인 프로그램이다. (능동적)
- 프로그램은 디스크에 존재하는 것이며 이것이 메모리에 로드되어 프로그램 카운터를 가지고 실행되면 프로세스가 된다.
- 멀티태스킹 시스템에서 작업의 단위로 쓰인다.
- 프로세스는 스택, 힙, 데이터, 텍스트 섹션들을 가지고 있다.
- 프로세스는 실행되면서 그 상태가 변한다. 프로세스의 상태는 크게 5가지로 나눌 수 있다.
PCB(Process Control Block)란?
- 만약 2개의 프로세스 사이에서 CPU가 전환된다면 PCB에 상태를 저장하고, 읽어오면서 CPU를 전환한다.
- PCBs는 프로세스 생성시 만들어지며 프로세스와 관련된 여러 정보를 가지고 있다. 프로세스 관리자에 의해 관리된다.
- 저장하는 정보는 아래와 같다.
- 프로세스 상태 : 위에서 설명한 프로세스 상태를 담고 있습니다.
- 프로그램 카운터 : 특정 프로세스가 다음에 실행할 명령어의 주소를 가리키고 있습니다.
- CPU 레지스터 : 프로세스가 인터럽트 발생 시 어디까지 실행되었는지 상태를 담고 있습니다.
- CPU-스케줄링 정보 : 프로세스 우선순위 등을 포함합니다.
- 메모리 관리 정보 : 메모리와 관련된 테이블 정보를 포함합니다.
- 회계 정보 : CPU 사용 시간, 시간 제한, 저장 번호를 포함합니다.
- 입출력 상태 정보 : 프로세스에게 할당된 입출력 장치 정보를 가지고 있습니다.
프로세스 연산
- 시스템 내 프로세스들은 대부분 병행 실행 가능하며 반드시 동적으로 생성/제거해야 한다.
1) 프로세스 생성
- 프로세스는 pid(process identifier)라는 고유한 식별자를 통해 관리되고 식별된다.
- 언제나 pid가 1인 systemd(혹은 init, 운영체제마다 다름) 프로세스가 최상위 프로세스이며, 시스템이 부트될 때 생성된다.
2) 프로세스 종료
프로세스간 통신방법
- 운영체제 내에서 실행되는 병행 프로세스들은 독립적이거나 협력적인 프로세스일 수 있다.
- 이때 프로세스 간 협력을 위해서는 프로세스 간 통신(IPC)이 필요하다. 이 IPC에는 크게 두 가지 방법이 있다.
1) 공유 메모리 (shared memory)
- 일반적으로 운영체제는 한 프로세스가 다른 프로세스의 메모리를 접근하는 것을 금지하지만, 공유 메모리는 둘 이상의 프로세스가 이 제약 조건을 제거하는 것에 동의하는 것이다.
- 보통 공유 메모리 영역은 프로세스의 주소 공간에 위치한다.
- 생산자 소비자 문제의 해결책 중 하나가 공유메모리를 사용하는 것
2) 메세지 전달 (message passing)
- 프로세스들 간에 교환되는 메시지를 통해 IPC가 이루어진다. 이 방식에선 메모리를 프로세스간에 공유할 필요가 없다.
- 네트워크에 연결된 컴퓨터들 사이에서 특히 유용하다.
- 메시지 전달 방식은 최소 2가지 연산을 제공한다.
- send: 메시지를 전송. 메시지 길이는 고정 길이일 수도 가변 길이일 수도 있다.
- receive : 메시지를 수신. 메시지를 수신할 때까지 대기한다.
- 이런 메시지 전달 방식 설계에서 고려해야 할 것은 다음과 같다.
- Naming : 통신할 프로세스들이 어떻게 서로를 식별할 것인가?
- Syncronization : 메시지를 주고받는 프로세스들이 어떻게 동기화할 것인가?
- Buffering : 프로세스들 간의 메시지 큐를 어떻게 관리할 것인가?
공유메모리가 메세지 전달보다 빠르다. 메시지 전달 방식은 일반적으로 시스템 콜을 이용해 구현하므로 커널 간섭 등 때문에 느리다.
하지만 공유 메모리 방식은 공유 메모리 영역을 구축할 때만 시스템 콜이 필요하고 그 이후에는 커널의 도움이 필요 없다.
실제 IPC 기법
1) 파이프
2) 소켓
레퍼런스
1)
운영체제 공룡책 3단원 정리
운영체제 3단원 정리
witch.work
2)
공룡책 3장 프로세스
이 글은 공룡책으로 유명한 운영체제 9판을 가지고 작성한 글입니다. 다르거나 이상한 점이 있다면 댓글로 알려주시면 감사하겠습니다. 옛날엔 한 번에 하나의 프로세스만을 실행하도록 했지만
ggodong.tistory.com
3)
[OS] 프로세스 생성과 종료 개념 정리
프로세스에 대한 연산 대부분 시스템 내의 프로세스들은 병행 실행될 수 있으며, 동적으로 생성되고, 제거되어야 한다. → 운영체제는 프로세스 생성 및 종료를 위한 기법을 제공해야 한다. 프
howudong.tistory.com
'TABA > 운영체제' 카테고리의 다른 글
[공룡책] Ch6. Synchronization tools 정리 (0) | 2024.01.23 |
---|---|
[공룡책] Ch5. CPU Scheduling 정리 (0) | 2024.01.23 |
[공룡책] Ch4. Threads & Concurrency 정리 (0) | 2024.01.12 |
[공룡책] Ch2. Operating system structures 정리 (0) | 2024.01.12 |
[공룡책] Ch1. Introduction 정리 (0) | 2024.01.11 |