일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- codestates
- 프로그래머스
- 글또
- useState
- Computer Science
- Python
- OS
- 자바
- python algorithm
- react 기초
- Operating System
- 코드스테이츠
- typeScript
- Zerobase
- java
- REACT
- 알고리즘
- 컴퓨터공학
- 개발공부
- algorithm
- 자바스크립트
- 파이썬 알고리즘 인터뷰
- execution context
- 자료구조
- context switching
- JavaScript
- 운영체제
- node.js
- 파이썬
- 비동기
- Today
- Total
Back to the Basics
[Computer Science][제로베이스 ]-운영체제 - 프로세스 스케줄링 - 배치 처리 시스템,시분할 시스템, 멀티 태스킹 , 멀티 프로그래밍 본문
[Computer Science][제로베이스 ]-운영체제 - 프로세스 스케줄링 - 배치 처리 시스템,시분할 시스템, 멀티 태스킹 , 멀티 프로그래밍
9Jaeng 2021. 10. 27. 23:28제로베이스 컴퓨터 공학자 따라잡기 온라인 완주반 강의를 듣고 정리한 포스팅입니다.
<강의 요약 배치 처리 시스템 , 시분할 시스템, 멀티 태스킹>
- 배치 처리 시스템 (일괄 처리 , Batch Processing)
- Queue 자료구조와 비슷한 FIFO방식으로 프로그램을 실행하는 방식. 실행 요청 순서에 따라 순차적으로 프로그램을 실행한다.
- 단점
- 동시에 여러 프로그램을 실행하지 못한다
- 다중 사용자 지원이 불가능하다.
- 응답시간이 높아진다.
이를 보완하기 위해 멀티 시분할 시스템과 멀티프로그래밍이 등장했다.
- 시분할 시스템 : **다중 사용자 지원, 응답시간 최소화
위의 사진과 같이 여러 프로그램이컴퓨터 자원을 짧은 시간 단위로 사용하는 것을 말한다.
- 멀티 태스킹 (Multi Tasking) : 동시에 실행하는 것처럼 보이도록 함
단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템을 말한다.
CPU가 빠르게 프로그램을 바꿔가면 실행하기 때문에 User가 보기에 마치 동시에 실행되는 것처럼 보인다.
멀티 Tacking과 같이 나오는 용어로 멀치 프로세싱이 있다.
- 멀티 프로세싱(Mult Processing) : 여러 CPU에서 하나의 프로그램 병렬 실행
멀티 프로세싱은 여러 CPU에서 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화 하는 시스템을 말한다.
단일 CPU에서 여러 시스템을 빠르게 바꿔가며 실행하는 멀티 태스킹과는 다르다.
<강의 요약 멀티 프로그래밍>
- 멀티프로그래밍 : CPU를 일정 시간당 최대한 많이 사용하는 시스템
멀티프로그래밍의 목적은 CPU의 활용도를 높여서 짧은 시간 안에 프로그램의 실행을 완료시킬 수 있게 하는 것이다.
응용프로그램은 CPU를 온전히 다 쓰지 않고, 중간에 다른 작업을 하는 경우가 있다. (예를 들면 중간에 파일을 불러와야 해서 저장매체에 접근을 한다던가 하는 등의 작업) 이런 경우 파일을 읽어 들이기까지 CPU는 실행을 하고 있지 않으므로, 이 시간 동안 다른 프로그램을 실행시키는 방식이다.
(강의에서 제공한 코드)
#include <unistd.h>
#include <systypes.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd; // 여기까지 CPU가 실행
fd=open('data.txt'.O_RDOMLY); // 저장매체에서 받아와야함
if(fd==-1) // fd가 결과값을 받기 전까지 시간이 남기 때문에 다른 응요 프로그램으로 바꾼다.
{
printf("Error : can not open file\n")
/* 파일을 열지 목했으므로 그냥 종료한다*/
}
else
{
printf("File opened and now close_\n");
close(fd);
return();
}
}
위의 응용 P의 코드에서 fd=open('data.txt'. O_RDOMLY); 를 만나면 이 응용 P는 fd에 결과가 올 때까지 queue와 같은 곳에 저장을 해놓고 blocking 상태가 된다. 그동안 다른 응용 P가 실행이 된다. 파일을 다 읽고 fd로 결과를 받으면 다시 바꿔 실행한다.
정리
실제로는 시분할 시스템 , 멀티프로그래밍, 멀티 태스킹이 유사한 의미로 통용된다고 한다.
이 세 가지 시스템의 핵심은 다음과 같다.
- 여러 응용 프로그램 실행을 가능하게 한다
- 응용 프로그램이 동시에 실행되는 것처럼 보인다.
- CPU의 활용도를 높여서 짧은 시간 안에 응용프로그램이 실행을 완료할 수 있다.
- 응답 시간을 줄이고 다중 사용자도 지원한다.