프로세스와 스레드
프로세스
PCB(Process Controll Block)를 사용하여 OS가 프로세스를 관리한다.
특징
- 메모리에 적재되어 실행되는 프로그램의 인스턴스
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 프로세스는 각각 독립된 메모리 영역을 할당받는다.
- 각 프로세스는 최소 하나의 스레드를 가진다.
- 각 프로세스는 별도의 주소공간을 가지며, 프로세스는 다른 프로세스의 공간에 접근할 수 없다.
구조
- Stack
- 임시 데이터 저장 (함수 호출, 지역변수 등)
- 함수를 호출할 수록 커지며 힙 메모리와 인접한 방향으로 커진다.
- 스택 포인터와 힙 포인터가 만나면 메모리가 소진되었다는 의미다.
- Heap
- 코드에서 동적으로 만들어지는 데이터 저장
- Data
- 전역 변수, static 변수 등
- Code
- 프로그램을 실행시키는 실행파일 내의 명령어들이 기계어 명령 형태로 변환되어 저장
- readOnly
- Stack
스레드
- 프로세스에서 실행되는 여러 흐름의 단위
- 스레드는 프로세스 안에서 Stack 메모리만 할당받고 나머지 영역(Code, Data, Heap)은 공유한다.
프로세스와 프로그램
- 프로그램: 파일 시스템에 존재하는 실행파일
- 프로세스: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
결론
- 프로세스(작업)는 최소 한 개의 스레드 존재.
- OS는 Virtual Memory를 프로세스에 할당
- 프로세스에 속한 모든 스레드는 프로세스의 Virtual Memory로 공간이 제약된다.
참고
'CS > OS' 카테고리의 다른 글
뮤텍스, 세마포어, 모니터 (0) | 2023.03.01 |
---|
댓글