[KOCW] 이화여대 반효경 교수님 운영체제
http://www.kocw.net/home/cview.do?cid=3646706b4347ef09
[운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net](http://www.kocw.net/home/cview.do?cid=3646706b4347ef09)
2. Introduction to Operating Systems
1. 운영체제란 무엇인가?
1) 운영체제란?
→ 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
협의의 운영체제(커널)
-운영체제의 핵심 부분으로 메모리에 상주하는 부분
광의의 운영체제
-커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
2) 운영체제의 목적
- 컴퓨터 시스템의 자원을 효율적으로 관리
프로세서, 기억 장치, 입출력 장치 등의 효율적 관리
-사용자 간의 형평성 있는 자원 분배
-주어진 자원을 최대한의 성능을 내도록
사용자 및 운영체제 자신의 보호
프로세스, 파일, 메시지 등을 관리
- 컴퓨터 시스템을 편리하게 해주는 환경을 제공
- 운영체제는 동시 사용자/ 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
3) 운영체제의 분류
(1) 동시 작업 가능 여부에 따라
- 단일 작업
→ 한 번에 하나의 작업만 처리
예) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
- 다중작업
→ 동시에 두 개 이상의 작업 처리
예) UNIX, MS Windows 등에서는 한 명령의 숭행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
(2) 사용자 수에 따라
- 단일 사용자
→ MS-DOS, MS Windows
- 다중 사용자
→ UNIX, NT sever
여러 사용자가 컴퓨터 계정에 동시 접속이 가능한가???
사용자가 많으면 보안기능, 사용자 간의 형평성 있게 메모리 자원 추가해야함
(3) 처리방식에 따라
일괄처리(현대에서는 쓰이지 않음→옛날 동사무소 서류떼면 30분 걸림)
인터렉티브하지 않음!
작업 요청의 일정량을 모아서 한꺼번에 처리
작업이 완전 종료될때까지 기다려야함
예) 초기 Punch Card
실시간
정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS
예) 원자로/ 공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
(정전 한번 나면….반도체 공장 큰일난다)
실시간 시스템의 개념 확장
Hard realtime system(경성 실시간 시스템)
Soft realtime system(연성 실시간 시스템)
→ 최근! 데드라인 어겨도 그렇게 심각하지 않음
예) 넷플릭스, youtube, 영화, ….데드라인 넘어간다고 누가 잘릴정도의 심각성은 아니다!
2. 혼돈하기 쉬운 용어 정리
Multitasking : 여러 프로그램이 함께 돌아가는 것. 하지만 엄연히 말하면 따로 돌아가지만 동시에 실행되는 것처럼 보임
Multiprogamming - 멀티태스킹과 비슷하지만, 여러 프로그램이 메모리에 동시에 올라가는 있다. 멀티태스킹이 되려면 당연히 여러프로그램이 메모리 동시에 올라가야하지만 특별히 메모리 측면을 강조한 것!
Time sharing - 멀티태스킹과 유사하지만 cpu측면 강조. cpu가 시간을 분할하여 나누어 쓴다는 의미를 강조.
Multiprocess - 실행 중인 프로그램.여러 프로그램이 동시 실행. 같은 말.
Multiprocessor
→ cessor : CPU라고 함. 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미.
멀티태스킹 지원 + CPU가 여러개 달린 환경 지원. (고성능 컴퓨팅) 병렬 프로그래밍이 가능한 고성능 컴퓨팅이라고 한다. (이건 4학년 때 더 자세히 배움)
3. 운영 체제의 예
유닉스
코드의 대부분을 C언어로 작성. 기존에는 기계어 즉 어셈블리언어로 만듦.
높은 이식성 → C언어로 작성되었기 때문에 하나의 컴퓨터에서 돌아가는 유닉스를 다른 컴퓨터에 이식 가능
(이식하기 어려운것은- 기계어 집합)
최소한의 커널 구조
복잡한 시스템에 맞게 확장 용이
소스코드 공개(현재는 아님)
프로그램 개발에 용이
다양한 버전
SYSTEM V, FreeBSD, SunOS, Solaris,(
Linux (소스 공개)
→특이하게 대형 보다는 개인용 같이 여러 환경에서 활용 가능. 안드로이드도 커널은 리눅스 커널임
DOS
→ 처음에는 단일 사용자용 운영체제, 단일 작업 지원
→ MS사 개발. 메모리 관리 능력의 한계(주 기억장치 : 640KB)
MS Windows다중 작업용 gui 기반 운영 체제
4. 운영 체제의 구조
이러한 자원들을 관리하는 것이 운영체제의 기본!
CPU 스케줄링 : 어떤 프로그램에 CPU 를 할당할 것인가?
cpu는 굉장히 빠르다. cpu를 줬다가 뺐다가 일반적.
먼저 온 사람이 선착순 X, 하나의 프로그램이 계속 cpu 사용X
memory, 메모리 관리 : 한정된 메모리를 어떻게 쪼개어 쓰지? 메모리 분배 이슈
cpu가 원활하게 실행되려면 필요한 메모리 용량이 있음
워킹셋 모델
너무 많은 프로그램이 동시에 실행되려며고 하면 일부만 실행되고 나머지는 쫓아내버림.
특정 친구에게 집중적으로 몰아주는 것
→ cpu에서 머지 않아 다시 사용할 가능성이 높은 것X 그렇지 않은 것을 쫓아낸다.
그럼 어떻게 예측하는가? 메모리가 사용이 많이 되었다면 미래에도 사용될 것이라 판단
DISK, 파일 관리 : 디스크에 파일을 어떻게 보관하지?
- 조각조각 나누어 관리할지 연속적으로 관리하면 좋을지
- 접근하면 기본적으로 헤드가 움직이므로 메모리와는 다르다.
- 디스크도 스케줄링이 필요하다. 디스크에 들어온 요청을 먼저 들어온 순서대로 처리할 수도 있지만, 헤드가 움직이며 찾으므로 헤드와 가까우면 먼저 처리하는 식으로 해서 이동을 줄이는 방법으로 처리하게 된다.(HDD 기준)
- ex) 엘리베이터 ,택배 시스템
- CPU는 이걸 빠르니 어떻게 관리할까, DISK는 어떻게 하면 움직임을 최소화하고 요청을 빨리 처리할까
I/O device : 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지?
- CPU , 메모리보다 훨씬 느림. 교신을 하면서 처리를 해야하는데 워낙 느려서 정보를 어떻게 주고받을지가 이슈! → 입출력관리라고 합
- 기본적으로 interrupt에 의해 관리됨.
- cpu에 보고해야 하는 일 있으면 cpu에 interrupt를 걸어 요청함.