프로세스, 프로세서가 자주 헷갈리는 경우가 종종 있어서 정리할겸 포스팅한다.
프로세서(Processor)
중앙처리장치(CPU)를 의미하여 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛 (HW)으로 하나 이상의 ALU와 레지스터를 내장한것
ALU (ALU, Arithmetic Logic Unit) - 산술논리장치로 CPU에서 실제로 연산을 수행하는 장치 - 사칙연산, 논리연상 담당 (ALU 크기가 CPU 크기를 결정함)
제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심부분으로 프로그램을 기억장치로부터 읽어 연산, 비교처리, data전송, 편집, 변환, 테스트와 분기등의 데이터를 처리하고 각종 장치를 구동하는 역할을 한다.
여러개의 프로세서(CPU 여러개) 를 사용하는 것을 멀티 프로세싱이라 칭한다
OS 관점에서 여러 프로세스를 효율적으로 사용하기위해 하드웨어 자원을 사용하지만 작업량이 많을수록 오버헤드가 많아진다
멀티 프로세싱 (Multi Process, Multi Processing)
통상적으로 1개의 프로세서가 1개의 작업을 맡지만 멀티 프로세싱은 다수의 프로세서가 협력하여 다수의 작업(프로세스)을 처리하는것(1:1이 아닌 다:다)으로 1개의 프로세서가 문제가 발생해도 다른 프로세서에서 수행중이기에 작업이 정지되지 않는다.
다수의 프로세스가 처리되어야할때 동일한 데이터를 사용하면 각 데이터를 각 프로세서에 할당할 필요없이 1개의 공간에 데이터를 저장후 이를 공유하여 사용하토록 하면 비용절감이 가능하다.
크롬에서 1개의 페이지가 멈추면 멈춘 페이지만 끌수 있으나 IE에선 1개의 페이지가 멈추면 브라우저 자체를 꺼야하는 불편함이 있다.
(크롬 - 멀티프로세싱 , IE - 멀티스레딩 방식을 채택하고 있다)
프로세스(Process)
컴퓨터에서 연속적으로 실행되는 컴퓨터 프로그램으로 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업단위로 프로세서가 실행할 명령어와 데이터 목록을 메모리에 읽어들인것
실제 메모리에 적재되어 실행중이거나 대기중인 프로그램 (SW)
같은 시간에 여러개의 프로그램을 띄우는(돌리는) 시분할 방식을 멀티태스킹이라고 한다.
시분할 시스템(방식) (TSS, Time Sharing System) - 프로세서를 통해 다중 작업을 교대로 수행하는것으로 CPU 스케쥴링 + 다중 프로그래밍을 이용해 각 사용자들에게 자원을 시간적으로 분할하여 사용하도록 해준다. -> 라운드 로빈 스케쥴링
라운드 로빈 스케쥴링 - 시분할 시스템을 위해 설계된 선점형 스케쥴링의 하나로 프로세스간 우선순위가 없이 순서대로 시간단위를 CPU에 할당하는 방식
타임슬라이스(Time slice) - 스케쥴링이 일어나는 간격으로 I/O를 진행중이라도 해당 시간이 도래하면 무조건 스케쥴링을 실행한다. (OS가 CPU가 발생시키는 클럭 주기를 기준으로 타임슬라이스를 지정)
프로그램 실행과정
1. 단축아이콘 혹은 명령행에서 프로그램을 실행
2. 파일로 저장되있는 프로그램은 메모리(램)에 로더(Loader)에 의해 적재(load)되고 처음으로 실행해야할 기계어 코드가 저장된 메모리의 주소를 CPU의 명령주소(IP : Instruction Pointer) 레지스터에 저장한다.
3. 프로세서 (CPU)는 IP 레지스터가 가리키는 메모리 주소에서 실행할 명령어를 인출(메모링 -> CPU로 가져온다)하여 명령 레지스터 (IR : Instruction Register)에 저장한다.
4. IR에 저장된 명령을 실행하고 IP에 다음에 실행할 명령어가 있는 주소를 저장한다.
프로그램 - 파일같은 형태로 저장되어 있으며 이것이 OS에 의해 동작되는 상황으로 HW에 저장되어있는 실행코드
OS의 스케쥴링 시스템 종류
1.선점형 스케쥴러 (preemptive scheduling)
1개의 프로세스가 실행중일때 다른 프로세스 중간에 프로세서를 차지(선점)할수 있는것 - 오버헤드 발생우려
라운드 로빈 (Round Robin)
SRT 스케쥴링 - 빨리 끝나는 프로세스부터 끝내는 방식
다단계 큐 스케쥴링 (FIFO + 라운드 로빈 방식) - 가장 높은 순위의 큐 프로세스에 CPU할당, 신규 프로세스는 고 우선순위를 갖지만 실행시간이 길어질수록 낮은 수운선위의 큐로 이동(우선순위가 낮을수록 시간 할당량을 크게 줘 보완), 마지막엔 FCFS 방식 적용
다단계 피드백 큐 스케쥴링 - 다단계 큐 + 동적 프로세스 우선순위 변화적용
SJF 스케쥴링 (비선점도 가능)
2. 비선점형 스케쥴러 (non-preemptive scheduling)
한개의 프로세스가 끝날때까지 다른 프로세스가 CPU를 사용할수 없으며 프로세스가 자발적 blocking 또는 실행이 끝난경우만 교체(선점)가능
HRN스케쥴링
SJF 스케쥴링 (선점도 가능)
우선순위스케쥴링
기한부 스케쥴링
FIFO 스케쥴링
멀티 프로그래밍 방식(Multi-programming)
배치(batch) 처리 시스템
멀티 프로세싱
멀티태스킹
시분할 방식 (Time-Shared)
CPU 전체 사용시간을 작은 작업시간량으로 분할하여 그 시간량동안 작업을 번갈아가며 CPU를 할당해주는 방식 (멀티스레드, 멀티태스킹이 가능토록 해준다)
프로그램간 실행을 전환하는건 OS가 담당하며 프로세스 응답시간을 최대한 짧게 가져가는것 - 타임슬라이스
멀티태스킹
다수의 작업 (Task)를 OS의 스케쥴링에 의해 번갈아가며 수행되도록 해주는것
프로세서는 특정 순간에 1개의 작업만 가능한데 우리는 컴퓨터를 사용할때 여러 프로그램을 동시에 사용할수 있는데 이것은 OS가 다수의 작업을 스케쥴링하여 우리가 느끼지 못하는 시간마다 작업을 번갈아가며 수행하여 우리 눈에는 동시에 수행되는 것처럼 보이게 해주는것이다.
멀티 프로그래밍
1개의 프로세서가 1개의 프로세스를 수행하는동안 타 프로세스에 접근할수 있도록 하는것 (블로킹 방식)
I/O가 완료되기 전까지 대기하는게 아닌 기다리며 다른 프로세스를 처리할수 있도록 해주는것 (시간나면 이것도 해줘 - 비동기방식)
(블로킹 (Blocking) - 작업(A)중 다른 작업(B)이 필요한경우 (B)의 작업이 완료될때까지 시간이 붕 떠버리는데 이때 다른 작업(C)을 진행하다가 (B)가 완료되면 (A)를 마저 진행하는것)
실시간 시스템방식
처리를 요구하는 자료가 발생할때마다 즉시 처리하여 그 결과를 출력하거나 응답하는 방식(은행 송금, 공장, 티켓팅 등 실시간으로 결과가 필요한곳에 사용)
배치처리 시스템
자료구조중 큐(Queue)와 같은 방법(FIFO)으로 첫번째 작업이 끝나면 이어서 2번째 프로그램이 자동실행되도록 하는것
한개의 작업이 끝나야지만 다음 프로그램을 실행하기에 한계가 존재한다
(멀티태스킹이 불가능하며 중간의 입력된 작업(A) 중요도가 더 높아도 현재 작업이 끝나야지만 (A)를진행한다)
스케쥴링 알고리즘
선입선처리(FIFO) 스케쥴러 - 가장 간단한 스케쥴러로 들어온 순서대로 프로세스를 실행하는 스케쥴러(배치 처리 시스템에서 사용하며 Stack을 생각하면 된다) (비선점형)
최단작업우선스케쥴러(SJF, Short job first) - 가장 프로세스 시간이 짧은 작업부터 실행하며 작업 시작전 모든 프로세스의 작업에 걸리는 시간을 계산해야한다. (비선점, 선점 둘다가능)
우선순위기반 스케쥴러 - 프로세스에 정적(실행전 프로세스 우선순위 지정) 또는 동적(상황에 따라 스케쥴러가 우선순위 변경 - 우선순위 같으면 FIFO방식으로 동작)으로 우선순위를 매겨 실행 (선점형)
라운드로빈 스케쥴러 (Round robin) - 프로세스마다 동일한 CPU시간을 할당, 해당 시간동안 프로세스 실행이 완료되지 않으면 남은 실행과정을 대기열의 맨뒤로 배치하는것 (시험문제 3분동안 풀어보다 안되면 제일 마지막에 푸는것)
'CS' 카테고리의 다른 글
링킹과 오브젝트파일 (0) | 2023.03.30 |
---|---|
운영체제란 (0) | 2023.03.30 |
주소 바인딩 (0) | 2023.03.18 |
제네릭(Generic) (0) | 2023.03.14 |
객체 지향 프로그래밍 (OOP) - 2 (5대원칙) (0) | 2023.03.02 |