프로그램
- 저장 장치에 저장된 실행할 수 있는 파일
프로세스
1) 프로세스
- 메모리에 올라와 실행 중인 프로그램의 인스턴스
- 코드, 데이터, 스택, 힙 영역으로 구성
- 프로세스 간 통신을 위해 IPC(Inter-Process Communication) 사용(파일, 소켓, 파이프 등)
2) 프로세스 제어 블록(PCB, Process Control Block)
- 프로세스에 대한 정보를 저장하고 있는 자료구조
- 프로세스 생성과 동시에 고유한 PCB 생성
- 프로세스가 CPU를 할당받아 작업하다가 Context Swithing 발생 시 실행 중인 프로세스의 정보를 PCB에 저장하고, 다시 CPU를 할당받았을 때, PCB에 저장된 정보를 기반으로 이전에 멈췄던 시점부터 다시 작업을 수행
- 프로세스 식별자, 프로세스 상태, 프로그램 카운터, CPU 레지스터 정보 등을 저장
3) 프로세스 상태 전이도
스레드
- 프로세스 내의 실행 단위
- 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성
- 데이터, 코드, 힙 영역을 한 프로세스 내의 다른 스레드와 공유
! 스택 영역을 독립적으로 할당 받는 이유
- 함수 호출 시 전달받은 인자, 되돌아갈 주소 값, 함수 내에서 선언되는 변수 등이 스택영역에 저장되는데, 이를 통해 스레드 마다 독립적인 실행 흐름을 갖기 위해
! PC 레지스터를 독립적으로 할당 받는 이유
- PC 레지스터에는 스레드가 다음 실행해야할 명령어의 주소값이 저장. CPU 할당 시 PC 레지스터에 저장된 주소값을 기준으로 이전까지 수행했던 부분부터 다시 수행
! 자바 스레드
- JVM이 운영체제 역할
- 자바에는 프로세스가 존재하지 않고 스레드만 존재
- 자바 스레드는 JVM에 의해 스케줄링 되는 실행 단위 코드 블록
'CS > Operating System' 카테고리의 다른 글
[운영체제] 스케줄러(Scheduler) (0) | 2020.06.18 |
---|---|
[운영체제] 교착상태(Deadlock) (0) | 2020.06.18 |
[운영체제] 동기화 (0) | 2020.06.18 |
[운영체제]멀티프로세스와 멀티스레드 (0) | 2020.06.18 |
[운영체제] 운영체제 (0) | 2020.03.30 |
댓글