2024-04-27. 20:19: 글 계승.2023-11-10-Process-Processor: 🌑 Process, Processor
Q
- 프로세스, 프로세서, 스레드에 대해 설명해 주세요.
- 프로세스와 스레드의 차이점은 무엇인가요?
- 왜 스레드
- 왜 비동기
Processor | 프로세서
단지 '프로세서' 라는 용어만 사용하였을 때, 일반적으로 CPU.
RAM에 저장된 프로그램-기계 명령어를 해석/처리하는 컴퓨터의 한 부분.
처리기로 불리기도 한다.
GPU, DMA와 같이 제한된 기능만을 수행하는 프로세서도 있다.
Process | 프로세스
버퍼 Buffer
- 임시 보관 장소
- ~= Cache 좀 복사가 빠른 곳에 두는 임시 보관 장소
프로세스 및 스레드 관리
프로세스
- 프로그래밍 언어로 작성된 프로그램이, 목적 코드로 (기계어 코드)로 번역되어 디스크에 저장된 후 운영체제의 도움으로 주기억장치에 적재되어 실행 중인 프로그램
- 한 마디로 메모리에 적재되어 실행 중에 있는 프로그램
프로세스 속성
- 고유 번호 PID Process Identification Number
- 메모리 정보
- 상태 Status
- 진행지점 Counter
- 문맥 Context
- 우선순위 Priority
- 자원목록 Process Resource
- 회계정보 Accounting Information
- 기타
LDA x
ADD y
STA z
→ z = x + y;
중간이 타임아웃이 되면 그 시점의 스냅샷을 저장하고
다시 돌아왔을 때 불러와 실행, 연속성
저장하는 CPU의 내용 = 문맥 Context
프로세스 관리 블록 PCB
- 프로세스는 OS의 관리 대상
- 프로세스가 하나의 개체로 등록됨
- 프로세스에 관한 모든 정보가 PCb에 기록되어 관리됨
- PCB의 총 개수가 곧 관리 가능한 최대 프로세스의 수를 의미함
- 프로세스는 OS의 관리 대상
프로세스 관리 (상태 천이)
- 운영제체는 프로세스의 처리과정에서 프로세스의 활동에 따라 해당 프로세스를 적절한 상태로 천이 시킨다
- @ 실행 상태가 아닌 모든 프로세스는 해당 상태의 대기열에 관리된다
프로세스 상태
- 준비 Ready 상태
- 실행 Running 상태
- 대기 Blocked 상태
- 보류 Suspended 상태
- 대기-보류 Block-Suspended 상태
- 종료 Terminated 상태 (Dispatch 배급하다)
스레드 Thread (실)
- 프로그램이 실행되는 흐름 줄기
- 보통 프로세스는 하나의 실행 줄기 즉, 하나의 스레드를 가짐 (단일 스레드 프로세스)
- I.E. C 프로그램의 main() 함수에서부터 시작하는 실행줄기
다중 스레드 프로세스 Multi Thread Process
- 다중 스레드 프로세스 개념
- 프로세스는 하나이지만, 여러 개의 실행 줄기(스레드)를 가짐
- OS는 스레드 별로 독립적인 상태 천이를 관리함
- 즉, 스레드 별로 ~
- 다중 스레드 프로세스 개념
~
CPU가 반드시 여러 개일 필요는 없음
CPU가 여러 개일 경우는 스레드들이 병렬처리됨
CPU가 하나일 경우는 스레드들이 병행처리됨
LDA | 100
주소 100
LDA_S | 100
주소 100 + Stack Pointer
상대주소기법
스레드 생성 및 제거
프로세스 생성 및 제거
- 프로세스 생성
- 새로운 프로세스는 이미 실행 중인 다른 프로세스가 OS에 오청함으로써 탄생
- 이들은 부모 프로세스 Parent Process의 자식 프로세스 Child Process 관계가 됨
- 단말기 (키보드) 사용자들은 실행하고자 하는 프로그램의 이름을 쉘 (명령어 해석기)에 전달하여 쉘로 하여금 프로그램 생성을 OS에게 요청하도록 함
- 디스크 프로그래밍 메모리로 적재하여 프로세스를 생성하는 OS부분을 로더 Loader 라함
- 프로세스 생성
프로세스 제거
- 정상적인 프로세스 제거는 해당 프로세스 스스로가 운영체제에게 요청함으로써 이루어짐
프로세스 간 통신 IPC InterProcess Communication
- 일반적인 프로세스들은 완전히 독립되어 다른 프로세서들과 격리되어 정보를 교환할 수 있음
- 거대한 프로그램을 작게 분리한 경우, 이를 프로세스 간의 통신 수단이 요구됨
- 클라이언트 Client → 서버 모델
- 대표적인 통신 수단을 파이프, 메시지, 큐, 공유 메모리, 세마포, 소켓(인터넷)을 들 수 있음
- 통신 경로는 운영체제에 의해 제공되기 때문에 각각의 통신 수단마다 고유의 셋업 절차를 따라야 함
프로세스 통제
- 실행중인 프로세스에 대한 어떤 조치를 취하는일
프로세스 통제수단
- OS가 제공하는 서비스 (시스템 콜)을 이용
- 유닉스/리눅스의 경우 kill() 시스템 콜
프로세스 통제 유형
- 강제 종료 :
- 실행중인 프로그램이 스스로 종료하기 전에 무조건 강제로 종료하도록 한다
- 일시 정지 :
- 완전히 종료하도록 하느 것은 아니고, 임시로 CPU의 할당을 받지 못하여 더 이상의 실행이 이루어지지 않도록 한다
- 실행 제개 :
- 일시 중지 상태에 있는 프로세스가 CPU를 할당 받아서 계쏙 수행할 수 있도록 한다.
- 우선 순위에 따라 다른 프로세스와 공평하게 CPU를 할당받는다
- 약속 처리 :
- 프로그램을 작성할 때 약속했던 처리 부분들을 실시간으로 지시한다
- 우선 순위 변경 :
- 실행중인 프로그램의 우선순위를 올리거나 내린다.
- 일반 사용자는 내리기만 가능하고,관리자는 양쪽 모두 가능하다.
- 강제 종료 :
Thread | 스레드
스레드는 프로세스 내에서 실행되는 작업의 단위로, CPU 자원을 할당받아 실행됨.
배경
Windows 95 이전, Windows OS는 싱글 스레드
프로그램 하나가 무한루프에 빠지면 다른 프로그램도 멈춤
- 한 프로그램이 무한루프를 돌면 다른 프로그램에도 영향
CPU를 나눠 써야 하는데 하나 밖에 없어서 그러지 못함
그래서 CPU 가상화
이제 CPU를 쓰지 말고, 스레드를 CPU처럼 써
- 프로세스에게 스레드를 나눠주고
- 그 스레드가 어플리케이션 입장에서는 마치 CPU 처럼 사용
이제 여러 개니까, 한 스레드가 무한루프에 빠져도 다른 스레드는 멈추지 않음
다른 스레드는 자신에게 주어진 스레드를 사용