KOCW 반효경 교수님 운영체제 강의 정리
이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다.
잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다.
강의 링크 : http://www.kocw.net/home/cview.do?lid=af8e05c97c6d60de
1. 운영체제란 무엇인가?
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 S/W와 H/W를 연결하는 소프트웨어 계층
협의의 운영체제(커널)는 운영체제의 핵심 부분으로 메모리에 상주하는 부분을 얘기한다.
광의의 운영체제는 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념이다.
2. 운영체제의 목적
운영체제의 목적은 컴퓨터 시스템의 자원을 효율적으로 관리하는데 있다.(자원관리자)
-> 프로세서, 기억장치, I/O등의 효율적 관리
또한 사용자간의 형평성 있는 자원 분배를 해야한다.
운영체제는 H/W 자원(resource)을 효율적으로 관리해주는 것이 가장 중요하다.
또 다른 목적으로는 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공해주는 것이다.
운영체제는 효율성과 형평성을 모두 고려해야 한다.
효율성 - 주어진 자원(resource)으로 최대한의 성능을 내는 것
형평성 - 특정 사용자가 차별받는 상황이 생기지 않는 것
운영체제는 H/W 자원(resource) 뿐만 아니라 S/W 자원(resource)도 관리해야 한다.
사용자는 운영체제 덕분에 H/W 자원(resource)이 어떻게 실행되는지 알 필요가 없다.
CPU는 아주 짧은 시간 간격으로 프로그램을 할당한다.(CPU가 1개일 경우)
워낙 빠르게 진행되어 사용자는 동시에 프로그램이 실행되는 것으로 생각할 수 있다.
메모리 또한 각 프로그램에게 메모리를 할당해주어야 한다.
3. 운영체제의 분류
운영체제는 아래의 3가지 기준으로 분류할 수 있다.
- 동시 작업 가능 여부
- 사용자의 수
- 처리 방식
3-1.동시 작업 가능 여부에 따른 분류
- 단일 작업(Single Tasking)
한번에 하나의 작업만 처리한다. - 다중 작업(Multi Tasking)
동시에 두개 이상의 작업을 처리한다.
현대의 운영체제는 다중작업을 진행해주는 운영체제이다.
3-2. 사용자의 수에 따른 분류
- 단일 사용자(Single User)
MS-DOS - 다중 사용자(Multi User)
UNIX, NT Server
PC 1대를 여러 사용자가 사용할 수 있는지를 기준으로 정의한다.
다중 사용자용일 경우 보안기능이 추가되어야 하며 형평적인 자원관리를 해주어야 한다.
3-3. 처리 방식에 따른 분류
일괄 처리(Batch Processing)
작업 요청의 일정량을 모아서 한꺼번에 처리하는 운영체제이다.
사용자가 작업을 했을 때 바로 반응하지 않는다.
현대 운영체제에서는 보기 어려운 운영체제이다.
ex) 초기 Punch Card 처리 시스템시분할(Time Sharing)
여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용하는 운영체제이다.
사용자가 입력한 것이 실시간으로 표현되는 느낌을 준다.
시분할은 시간에 제약을 두지 않고 사용자 수에 따라 바뀔 수 가 있다.
사용자가 느끼기에 빠르게 해주면서 주어진 자원(resource)을 최대한 활용하는 것을 목적으로 둔다.
현재 사용하고 있는 운영체제이다.실시간(Realtime OS)
정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 운영체제이다.
ex) 미사일 제어, 반도체 장비 등등
시분할과 RTOS 모두 interactive하지만 개념적으로 다르다.
RTOS는 시간에 제약이 있어 반드시 해당 시간에 동작이 되어야 한다.
특수한 목적을 가진 시스템에서 사용된다.
* 실시간 시스템의 개념 확장
Hard realtime system(경성 실시간 시스템) - 시간에 제약이 지켜지지 않을 시 치명적인 결함이 생기는 시스템
Soft realtime systme(연성 실시간 시스템) - 시간에 제약이 지켜지지 않을 시 이를 지키지 않더라도 치명적이 결함이 생기지 않는 시스템
스마트폰 운영체제는 보통 시분할이지만 RTOS가 필요한 부분이 증가되고 있다.
ex) 네비게이션, 블랙박스 등등
3-4. 용어 정리
- Multitasking - Task가 여러 개 돌아가고 있지만 CPU에서는 1개의 작업만을 하고있는 것
- Multiprogramming - 메모리에 여러 프로그램이 동시에 올가있는 것
- Time sharing - Multitasking과 유사하지만 CPU를 좀 더 강조한 의미
- Multiprocess - 여러 프로그램이 동시에 진행되는 것
- Multiprocessor - 하나의 PC에 CPU가 여러 개 붙어 있는 것을 의미
4. 운영체제의 예
4-1. UNIX
UNIX는 대형컴퓨터를 위해 만들어진 운영체제이다.
Mutitasking을 지원하며 다중 사용자가 이용 가능하다.
초기에는 어셈블리어로 만들어졌다.
대부분에 커널 코드는 C언어로 작성되어 있다.
초창기에 UNIX 코드는 오픈소스여서 누구나 가져다 쓰기 쉽고 교육용, 설계용으로 좋은 표본이 되었다.
대게 개발자가 UNIX 운영체제를 사용하는 것이 수월하였으나 일반 사용자는 사용하기 어려웠다.
UNIX는 C언어를 사용했기 때문에 다른 기계어를 사용하는 PC에도 사용하기 좋아 높은 이식성을 자랑한다.
다만 커널이 커지게 되면 메모리의 대부분을 운영체제가 차지하게 된다.
현재 UNIX는 오픈소스가 많이 사라졌지만 리눅스는 현재까지도 오픈소스이다.
UNIX는 서버용 운영체제이나 리눅스는 서버용 뿐만 아니라 개인용으로도 사용이 가능하다.
안드로이드 커널 또한 리눅스 커널이다.
4-2. DOS(Disk Operating System)
MS사에서 개발한 단일 사용자, 단일 작업 운영체제이다.
주 기억장치가 640KB밖에 되지 않아 메모리 관리 능력의 한계가 있다.
초기에 MS에서는 640KB로도 충분하다고 단언을 하였으나 H/W 발전속도가 빨라 DOS는 망해갔다.
4-3. MS Windows
MS사에서 개발한 다중 작업용 GUI 기반 운영체제로 개인 PC를 위해 만들어진 운영체제이다.
UNIX보다 안정적이지 못하나 요즘 Windows는 불안정성이 많이 해소되었다.
5. 운영체제의 구조
5-1. CPU 스케줄링
어떤 프로그램에 CPU를 할당할 것인지 선정하는 것
일반적으로 CPU 권한을 순서대로 할당하는 것이 합리적이라고 생각하나 컴퓨터에서는 꼭 이러한 방법이 합리적이지만은 않다.
CPU 스케줄링을 순차적으로 처리할 때 한 개의 프로그램이 계속 CPU를 잡고 있을 경우
무슨 행동을 하더라도 작업이 되지 않게 된다.
그래서 시분할을 일반적으로 사용하게 된다.
5-2. 메모리 관리
CPU에서 원활하게 동작하게 할만한 메모리를 할당 받고 있어야 한다.
무조건 메모리를 N분의 1로 나눈다고 해서 원활하게 동작하는 것은 아니다.
메모리 크기는 한정적이여서 메모리가 꽉 찼을 때는 어떠한 프로그램을 Disk로 보낼 것인지를 정해야 한다.
보통 CPU에서 재사용률이 떨어지는 것을 Disk로 보내는 것이 일반적이다.
5-3. 파일 관리
조각조각 나눠 저장하는 것이 좋은지, 일괄적으로 저장하는 것이 좋은지 등을 판단한다.
Disk는 헤드가 움직이면서 파일을 읽기때문에 메모리와는 다르다.
헤드에 가까운 위치에 요청이 있다면 해당 부분에 대해서 먼저 처리를 한다.
엘레베이터 시스템과 유사하다.
동작이 빠른 CPU 스케줄링과 성격이 다르다.
5-4. 입출력 관리(I/O Device)
매우 느리다.
기본적으로 인터럽트에 기반해서 관리가 된다.
5-5. 프로세스 관리
프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
5-6. 그 외
보호 시스템, 네트워킹, 명령어해석기 등등
'Computer Science > OS' 카테고리의 다른 글
6. Process Management (0) | 2021.03.07 |
---|---|
5. Process 2~3 (0) | 2021.03.06 |
4. Process 1 (0) | 2021.02.27 |
3. System Structure & Program Execution 2 (0) | 2021.02.11 |
2. System Structure & Program Execution 1 (0) | 2021.02.11 |