[반효경 운영체제] Introduction to Operating Systems
operating-system-study에서 스터디를 진행하고 있습니다.
운영 체제의 정의
운영 체제(operating system)란 컴퓨터 하드웨어 바로 윗 단에 설치되는 소프트웨어를 말한다. 운영 체제는 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다.
운영 체제 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라간다. 하지만 운영 체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것이다. 따라서 운영 체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려 놓고, 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용하게 된다.
좁은 의미의 운영 체제
메모리에 상주하는 운영 체제의 부분을 커널(kernel)이라고 부르며 운영 체제의 핵심 부분이다.
넓은 의미의 운영 체제
커널 뿐 아니라 시스템을 위한 유틸리티 (파일 복사 프로그램 등) 등을 뜻한다. 이와 같은 유틸리티들은 항상 메모리에 올려져 있는 것이 아닌 필요할 때 올라가는 별도의 프로그램이다.
운영 체제의 기능
사용자에게 편리한 환경 제공
편리한 환경을 제공한다는 뜻은 운영 체제가 여러 사용자 및 프로그램들에게 각각 독자적으로 컴퓨터를 사용하는 것 같은 환상을 제공한다.
운영 체제는 하드웨어를 다루는 복잡한 부분은 대행해 주고, 각 사용자 및 프로그램은 이에 대한 자세한 내용을 알지 못해도 프로그램을 실행할 수 있도록 한다. 위 그림과 같이 추상화된 컴퓨터를 통해 사용자는 파일이 디스크에 어떻게 저장되는지 몰라도 쉽게 파일을 저장할 수 있다.
컴퓨터 시스템 내의 자원을 효율적으로 관리
자원이란 CPU, 메모리, 하드디스크 등 하드웨어 자원뿐 아니라 소프트웨어 자원까지 통칭해서 부른다. 운영 체제는 이와 같은 자원을 효율적으로 관리하면서 좋은 성능을 내는 동시에 자원을 형평성 있게 분배하도록 만드는 균형자 역할도 수행한다.
보안
운영 체제는 사용자와 운영 체제 자신을 보호하는 역할을 수행한다. 여러 사용자의 프로그램이 하나의 컴퓨터에서 실행될 때, A 사용자가 B 사용자의 프로그램이 올라가 있는 메모리 영역을 침범하거나 특정 파일에 접근하는 일이 생기면 안 된다.
운영 체제의 분류
동시 작업 가능 여부
단일 작업 운영 체제
- 한 번에 하나의 작업만 처리한다.
- 한 명령의 수행이 끝나기 전에 다른 명령을 수행할 수 없다.
- ex) MS-DOS
다중 작업 운영 체제
- 동시에 두 개 이상의 작업을 처리할 수 있다.
- 한 명령의 수행이 끝나기 전에 다른 명령을 수행할 수 있다.
- ex) UNIX, MS Windows
사용자 수
단일 사용자용 운영 체제
- 한 번에 한 명의 사용자만이 사용하도록 허용한다.
- ex) MS-DOS, MS Windows
다중 사용자용 운영 체제
- 여러 사용자가 동시에 접속해 사용할 수 있다.
- ex) UNIX, NT server
처리 방식
일괄 처리 방식 운영 체제
- 작업을 모아서 한꺼번에 처리한다.
- 작업이 완전히 종료될 때까지 기다려야 한다.
- ex) Punch Card 처리 시스템
시분할 방식 운영 체제
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정 시간 단위로 분할해 사용한다.
- 일괄 처리 방식에 비해 응답 시간이 짧다.
- 사용자의 요청에 대한 결과를 곧바로 얻을 수 있으므로 대화형 시스템이라고 부른다.
- ex) UNIX
실시간 방식 운영 체제
- 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장한다.
- 시간 제약의 중요성에 따라 2가지로 분류한다.
- 경성 실시간 시스템: 주어진 시간을 지키지 않으면 매우 위험한 일이 발생하는 시스템 (ex. 원자로 제어 시스템)
- 연성 실시간 시스템: 주어진 시간을 지키지 않으면 내용 전달이 미흡할 수는 있으나 경성 실시간 시스템처럼 치명적이지는 않은 시스템 (ex. 멀티미디어 스트리밍 시스템)
헷갈리는 용어 정리
- Multitasking
- Multiprogramming
- Time Sharing
- Multiprocess
위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다. Multiprogramming은 여러 프로그램이 메모리에 올라가 있는 것을 강조하며, TIme Sharing은 CPU가 시간을 분할하여 작업을 처리한다는 것을 강조한다.
Multiprocessor
하나의 컴퓨터에 CPU (Processor)가 여러 개 붙어 있음을 의미한다.
운영 체제의 예
DOS
- MS 사에서 1981년 IBM-PC를 위해 개발
- 단일 사용자용 운영체제, 메모리 관리 능력의 한계 (주 기억 장치: 640KB)
MS Windows
- MS 사의 다중 작업용 GUI 기반 운영 체제
- Plug and Play, 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
- 풍부한 지원 소프트웨어
유닉스
- 코드의 대부분을 C언어로 작성
- 높은 이식성
- 최소한의 커널 구조
- 복잡한 시스템에 맞게 확장 용이
- 소스 코드 공개
- 프로그램 개발에 용이
- 다양한 버전
- System V, FreeBSD, SunOS, Solaris, Linux
운영 체제의 자원 관리 기능
자원 → 하드웨어 자원 (CPU, 메모리, 주변 장치, 입출력 장치) + 소프트웨어 자원
CPU 스케줄링
CPU는 통상적으로 컴퓨터 한 대에 하나가 장착되기 때문에 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리되어야 한다. CPU 스케줄링의 목표는 CPU를 가장 효율적으로 사용하면서도 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.
대표적인 스케줄링 기법으로 선입선출, 라운드 로빈, 우선순위 기법 등이 있다.
메모리 관리
메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억 장치이며, 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다. 이때 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리 메커니즘이 필요하다. 따라서 메모리 관리를 위해 운영 체제는 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는지를 파악하여 이를 유지하게 되는데, 이러한 정보는 주소를 통해 관리된다.
물리적 메모리는 관리하는 방식은 고정 분할 방식, 가변 분할 방식, 가상 메모리 방식 등이 있다.
디스크 관리
디스크의 용량도 한정적이다. 그래서 사용자가 필요로 하는 파일을 최대한 효율적이면서 많은 양의 파일을 저장해야 한다. 연속적인 공간에 저장하여 파일을 찾기 쉽게 저장할 것인지, 많은 양의 파일을 저장하기 이해서 파일을 조각 조각 잘라 여기 저기에 저장할지 판단한다.
디스크에서 파일을 읽어올 때는 디스크에 있는 헤더가 해당 파일을 찾아 읽어 온다. 이때 최소한의 움직임으로 최대한의 효율을 내기 위해 노력한다. 엘리베이터의 과정과 비슷한데, 엘리베이터가 1층에서 100층까지 가다가 도중에 15층이나 50층에 멈춰서 사람을 태울 수 있듯이, 디스크 헤더도 읽으려는 파일의 위치로 가는 도중 새로운 파일 리딩 요청이 들어오면 그 요청부터 수행한다.
입출력 관리
키보드, 마우스, 모니터 등 우리가 접하는 수많은 장치가 입출력 장치다. 이 I/O 디바이스들은 CPU에 비해 많이 느리다. 그래서 이 디바이스들과 컴퓨터가 어떠한 방식으로 정보를 주고 받는 지가 컴퓨터의 성능과 직결된다. I/O 디바이스들은 각각 I/O 디바이스 컨트롤러라는 독자적인 작은 CPU를 갖고 있으며, 인터럽트라는 요소를 중심으로 컴퓨터와 정보를 주고 받는다.
프로세스 관리
프로세스란 현재 실행 중인 프로그램인데, 추후 자세히 다룰 예정이다.
출처
http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1046323
운영 체제와 정보 기술의 원리 - 반효경
'스터디 > 운영체제 스터디' 카테고리의 다른 글
[반효경 운영체제] Process Management 1 & 2 (0) | 2021.12.05 |
---|---|
[반효경 운영체제] Process 2 & Process 3 (Thread) (0) | 2021.11.30 |
[반효경 운영체제] Process 1 (0) | 2021.11.24 |
[반효경 운영체제] System Structure & Program Execution 2 (0) | 2021.11.24 |
[반효경 운영체제] System Structure & Program Execution 1 (0) | 2021.11.21 |
댓글