안 쓰던 블로그
네트워크 운영체제 본문
들어가기전 컴퓨터를 이루는 3대 하드웨어에 대해 살펴보도록 하겠다.
하드웨어 |
||
하드디스크 |
RAM |
CPU |
하드디스크: 보조기억장치. 모든 데이터와 프로그램을 저장하는 창고역할을 한다.
RAM: 주기억장치. 현재 실행 중인 프로그램이 기억된다. 컴퓨터를 끄면 데이터가 전부 사라지기 때문에 전원을 끄기 전에 모두 하드디스크에 저장되어야 한다.
CPU: 연산, 제어장치. 명령어를 실행한다.
우리는 하드웨어를 몰라도 컴퓨터를 잘 쓸 수 있다.
이것을 가능한 이유는 지금도 열심히 돌아가고 있는 운영체제 덕분이다!
1. 운영체제란?
한 마디로 '한정된 컴퓨터 시스템의 자원들을 보다 효율적으로 관리하고 운영'하는 시스템 소프트웨어다.
하드웨어와 응용 프로그램 사이에서 응용 프로그램들이 메모리, CPU등의 자원을 사용할 수 있도록 만들어주고,
여러개의 프로그램이 돌 때, 프로세스들을 스케쥴링하여 동시에 돌아가는 것처럼 보이게끔 하는 역할도 맡고 있는 것이다.
더불어 사용자와 기계 간의 인터페이스 역할을 수행하여 편리함을 제공한다.
대표적으로 Microsoft Windows, Mac OS, Linux가 있다.
운영체제가 하는 일은 크게 4가지로 나눌 수 있다.
하는 일 |
설명 |
프로세스 관리 |
프로세스 스케쥴링, 동기화 관리 프로세스 생성/제거 등 |
입출력 장치 관리 |
입출력 장치 스케쥴링 |
메모리 장치 관리 |
프로세스에 메모리 할당/회수 |
파일 관리 |
파일 생성/삭제/변경/유지 |
이러한 일을 함으로써
-처리량의 증대
-응답시간 단축
-신뢰성 향상
-사용도 증가
등의 편리함을 제공한다.
2. 운영체제의 유형
(1) 일괄 처리 시스템
처리해야 하는 데이터를 일정량 또는 유사한 작업끼리 묶어서 일괄적으로 처리하는 시스템이다.
처리하는 방식에 따라 2가지로 나누어진다.
-지역 일괄 처리: 데이터 입출력을 컴퓨터 내에서 처리한다.
-원격 일괄 처리: 컴퓨터와 원격지의 단말장치를 통신 회선으로 연결하여 단말 장치에서 정리된 데이터를 컴퓨터로 가져오는 처리 방식이다.
단말 장치에서 출력하므로 컴퓨터가 없어도 단말 장치와 회선만 있으면 일괄 처리가 가능하다.
(2) 다중 프로그래밍 시스템
여러개의 프로그램을 램에 적재시켜 놓고 CPU를 나눠 쓰는 시스템이다.
프로그램이 한 번 실행되면 끝날 때까지 기다려야 하는 답답한 상황을 보안하기 위해 등장하였다.
요지는 CPU가 쉬지않고 돌아가게 하는 것이다.
현재 돌아가는 프로그램이 대기상태에 들어갔을 때, 대기가 끝날 때까지 기다리는 것이 아니라
그 뒤에서 저게 끝나기를 기다리며 대기타고 있던 프로그램을 순서대로 들여보내는 것이다.
이렇게되면 딱 봤을 때 여러개의 프로그램을 동시에 처리하고 있는 것처럼 보인다.
대기 순서를 정하기 위해 스케쥴링 방법이 적용되었고,
여러 개의 프로그램을 동시에 메모리에 적재해야 하므로 메모리 관리가 필요하다.
(3) 시분할 시스템
여러 사용자나 프로그램이 동시에 컴퓨터를 사용할 수 있도록 CPU 사용 시간을 정하여 빠르게 권한을 넘겨받으며 공유하는 시스템이다.
이 시스템은 마치 혼자 사용하는 것과같은 기분을 들게만든다.
사실 다중 프로그램의 변형으로 사용자가 하나의 CPU를 사용하게 해준 것이다.
사용자 각 개인의 프로그램이 운영 체제의 제어하에 온라인으로 진행된다.
메모리에 여러 개의 사용자 프로그램이 적재되어야 하므로 다중 프로그래밍 환경이 지원되어야 한다.
여러 사용자가 동시에 입출력장치나 파일 등을 공유하므로 보호와 접근 제어가 필요하다.
이 또한 다중 프로그래밍이므로 스케쥴링 방법이 필요하다.
(4) 다중 처리 시스템
램 하나에 2개 이상의 프로세서가 동시에 동작하는 시스템이다.
하나의 프로세서가 고장나도 다른 프로세서에는 지장이 없어서 고장에 의해 처리가 중단되지 않아야 하는 경우에 많이 이용된다.
CPU를 많이 돌리고 있으니까 아무래도 빠를 수밖에 없다.
이 두가지가 다중 처리 시스템의 가장 큰 특징 두 개다.
하지만 프로세서의 연결과 상호 제어 등, 운영 체제의 세심한 설계가 필요하다.
(5) 실시간 시스템
외부의 제어 대상으로부터 입력되는 데이터를 짧은 시간에 즉석에서 처리하여 결과를 반환하는 시스템이다.
비행기 제어 및 교통 제어 등에 쓰인다.
(6) 분산 처리 시스템
각 시스템은 자신의 운영체제와 메모리, 프로세서를 갖고 있으며 독립적으로 운영되고 필요할 때 통신하는 시스템이다.
사용자의 접근을 제어하면서, 서로 원격지에 있는 자원을 편리하게 공유할 수 있다.
3. 스케쥴링
아까부터 계속 스케쥴링이 필요하다, 스케쥴링이 중요하다 이런 말을 했는데, 대체 스케쥴링이 뭘까?
스케쥴링이란 '컴퓨터 시스템의 모든 자원의 성능을 향상 시키기 위해 자원에 대한 사용 순서를 결정하는 정책'이다.
그러니까.. 단순하게 말해 자원을 쓰려고 뒤에 줄 서는 것이다.
다중 프로그래밍을 가능하게 하기 위해 운영체제가 프로세스들에게 CPU사용 순서를 정해야만 한다.
하지만 CPU는 한 번에 하나밖에 처리하지 못하기 때문에 스케쥴링 작업이 필요하다.
이 때 쓰이는 알고리즘이 스케쥴링 알고리즘이고, 다음과 같은 기준으로 효율성을 판단한다.
-처리량의 최대화: 주어진 시간 동안 얼마나 많은 작업을 수행하는가?
-응답시간의 단축: 사용자에게 얼마나 빨리 응답을 해주는가?
-작업 완료시간의 최소화: 작업을 제출한 후 완료되기까지의 걸리는 시간이 얼마나 되는가?
-CPU효율의 최대화: 가능한 CPU가 바쁘게 일하고 있는가?
-공평성: 가능한 모든 사용자들이 공평하게 자원을 사용하는가?
프로세스는 상황과 조건에 따라 상태 전이를 한다.
-프로세스 스케쥴러
준비상태에 있는 프로세스 중에서 어느 프로세스에게 CPU를 할당할지를 결정하는 스케쥴러.
빈번하게 스케쥴되므로 단기 스케쥴러라고도 부른다.
-작업 스케쥴러
디스크에 저장되어 있는 어떤 프로그램을 램에 적재할 것인지를 결정하는 스케쥴러.
램이 한정되어 있으므로 필요한 프로그램을 모두 로딩할 수가 없기 때문이다.
프로세스 상태전이 순서
(1) 하드에서 프로그램이 메모리로 넘어온다. 이 때, CPU와 입출력 장치를 가장 효율적으로 사용하도록 메모리를 할당하여 프로세스 형태로 대기한다.
넘어온 프로세스는 준비 상태로 머무는데, 준비 상태는 CPU를 점유하길 희망하는 상태이다.
프로세스 이동경로: 하드디스크→메모리
(2) 프로세스 스케쥴링에 따라 준비 상태에 있는 프로세스 중 하나를 가져와 실행시킨다.
실행상태에 있던 프로레스가 실행이 끝날 때까지 CPU를 독점하는걸 방지하려고 프로세스가 할당받은 CPU사용 시간이 완료되면 프로세스를 준비상태로 전이한다.
프로세스 이동경로: 메모리→CPU
(3) 프로세스가 CPU를 할당받아 실행되다가 어떤 이벤트가 나타나서 조건을 기다리게 되었을 때 프로세스는 대기 상태로 들어간다. 대기에 들어가면 그 다음으로 대기 타고 있던 프로세스가 실행 상태로 전이된다. 대기하던 프로세스는 사건이 만족되면 다시 CPU를 할당받기 위해 준비 상태로 전이된다.
(할당 받은 시간을 다 사용해서 준비 상태로 돌아간 것 뿐이지 시분할과는 다른 의미다.)
프로세스 이동경로: CPU→메모리
스케쥴링의 기준
-CPU 이용률
-처리량
-총 처리시간
-대기시간
-응답시간
4. 비선점 우선순위 기법
비선점 우선순위란 '중요한 작업에게 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스에게 먼저 CPU를 할당하는 비선점 스케쥴링 기법.
우선순위가 같다면 FCFS(프로세스 스케쥴링 기법)을 적용한다.
-우선순위 기준 예: 지금까지의 CPU 사용시간, 프로세스의 중요성 등
5. 문제 예시
[다음 프로세스들이 시간 0에 P1, P2, P3, P4순으로 도착하고 CPU 실행시간의 단위는 ms이다. 비선점 우선순위 기법을 이용하여 Gantt차트를 그리고 평균 반환시간과 평균 대기시간을 구하시오]
프로세스 |
실행시간 |
우선순위 |
P1 |
9 |
3 |
P2 |
2 |
1 |
P3 |
1 |
2 |
P4 |
6 |
4 |
[풀이]
Gantt차트:
P2 |
2 |
P3 |
3 |
P1 |
12 |
P4 |
18 |
우선순위에 따라 칸을 나누었다.
1순위인 P2가 먼저 시작해서 2만큼 실행되었다.
P2가 끝난 후, 그 다음 우선순위인 P3가 시작되어 1만큼 실행되었다.
P3가 끝난 후, P1이 시작되어 9만큼 실행되었다.
P4가 마지막으로 시작되어 6만큼 실행되고 모든 프로세스가 끝난다.
평균 반환시간: P2(2)+P3(3)+P1(12)+P4(18)=35/4
(반환시간: 프로세스가 끝난 시간-도착시간)
평균 대기시간: (총 반환시간)35-(총 실행시간)18=17/4
(대기시간: 반환시간-실행시간)
'Network' 카테고리의 다른 글
2, 3 Tier Architecture 발표 정리 (0) | 2017.03.14 |
---|---|
네트워크 구축 대회 준비(GNS-DNS/DHCP/FTP/VNC 서버 구축) (0) | 2016.11.11 |
C언어 TCP/IP socket 서버와 클라이언트 연결하기 (2) | 2016.10.23 |
C언어 TCP/IP socket error 10014 해결방법 (0) | 2016.10.23 |
라운드 로빈 (5) | 2016.04.19 |