프로그램
- 어떤 작업을 위해 운영체제 위세어 실행할 수 있는 파일 ex) 구글 크롬, 카카오톡, 워드 프로세서, 포토샵 등
프로세스
- 운영체제 위에서 실행중인 프로그램, 프로그램 명령어와 데이터들이 메모리에 올라고오 실행 중 또는 실행 대기중인 상태
- 운영체제가 짧은 시간에 수십에서 수천번 실행할 프로세스를 교체하고 있기때문에 동시에 여러개의 작업이 실행되고 있다고 느끼는것
프로세서
- 프로세스가 동작될 수 있도록 하는 하드웨어(cpu)
- cpu(프로세서는) 한순간에 하나의 프로세스만 실행 할 수 있음
프로세서 동작
- 프로그램의 자원들이 메모리에 올라오고, 실행 되어야 할 코드의 메모리 주소를 cpu의 레지스터로 올리는것
PCB(Process Control Block)
- 프로세스를 제어하기위 한 정보의 모음
- 프로세스 식별자 (PID)
- 프로세스 상태
- 다음에 실행할 명령어의 주소
- 이전에 작업하던 작업 내용 (레지스터)
- CPU 스케줄링 정보 (우선순위, 최종 실행시각, CPU 점유시간)
- 프로세스의 주소 공간
Context Switching
- 여러가지 작업에 대한 정보
- 작업이 교체되는 시점마다 다음 작업에 대해 필요한 정보(PCB)
프로세스 구조
- stack : 호출된 함수 지역변수 등 임시 데이터
- heap : 동적으로 생긴 데이터 ex) new Date, new Promise
- data : 전역변수 ex) global 변수, static 변수
- code : 프로그램의 코드 (text)
멀티프로세스 단점
- 프로세스1에서 프로세스2로 context switching이 발생할때 프로세스1의 정보를 cpu에서 내리고 프로세스2의 정보를 가지고 오게되는데 이때 통신이 필요하게됨
Thread
- 프로세스 내에서 실행되는 작업 흐름의 단위 ex) 구글크롬은 1개의 프로세스 , 구글 크롬내에서 실행되는 작업의 단위는 스레드 ex) 유투브 영상 가져오기, 블로그 글쓰기, 글 보기, 검색 등
- stack , heap, data, code의 병렬을 보완하기 위해 나온게 thread
- 1개의 process 안에서 code data heap영역을 공유하기 때문에 서로간의 네트워크 통신이 필요하지 않음 => process를 공유 하고 있기때문에 context switching이 발생하지 않음
'CS' 카테고리의 다른 글
쓰레드와 쓰레드풀 (0) | 2023.07.02 |
---|---|
프로세스 생명주기, 프로세스 메모리 (0) | 2023.06.19 |
운영체제 (0) | 2023.06.12 |
CPU 와 메모리 (0) | 2023.06.04 |
컴퓨터 과학(cs) 프롤로그 (0) | 2023.03.10 |