728x90
program:디스크에 저장된 수동적인 것
process:메인 메모리에 존재하는 능동적인 것
thread:프로세스의 작업 흐름
하나의 프로그램에 프로세스는 다수 가능
하나의 프로세스에 스레드는 다수 가능
멀티스레드 프로세스는 다수의 program counter를 갖는다.
프로세스는 상태를 갖는다.
new(새로생성)
ready(프로세서 할당 기다림)
running(프로세서가 할당되어 실행중)
terminated(실행중 종료됨)
waiting(작업이 완료되어 입출력을 기다림)
멀티프로그래밍으로 여러 프로세스를 메모리에 올려둬도 되는데 굳이 스레드를 여럿두어 멀티스레딩을 하는 이유는
-두 프로세스가 하나의 데이터를 공유하려면 메시지 패싱이나 공유 메모리 등을 사용해야되는데 효율도 떨어지고 개발자가 구현 및 관리하기가 번거로움
-프로세스 사이 컨텍스트 스위칭이 계속 일어나면 오버헤드가 발생, 스레드 전환에도 컨텍스트 스위칭이 발생하지만 속도가 더 빠름
(메시지 패싱:interprocess communication 중 하나로, 커널을 통해 정보를 송수신, 컨텍스트 스위칭 발생하여 느림, 동기화문제가 발생할 수 있음(수신자가 메시지 받을 때까지 송신자를 blocking 등의 형태로 동기화문제해결책 개발을 해줘야함)
(공유 메모리:커널을 거치지않고 두 프로세스가 메모리 일정역역을 사용하여 정보를 송수신, memory-safe를 개발자가 구현해야하는데 번거로움)
728x90
'CS' 카테고리의 다른 글
[CS] 개발자에 좋은 글/사이트 (0) | 2023.08.21 |
---|---|
[OS]CPU, processor, microprocessor, core (0) | 2020.11.24 |
[OS]DMA(Direct Memory Access), PIO(Programmed I/O) (0) | 2020.11.24 |
[OS]인터럽트, 트랩 (0) | 2020.11.24 |
(미완)UML, Unified Modeling Language란 (0) | 2020.11.22 |