운영체제
사용자가 응용 프로그램을 실행할 수 있는 환경을 제공하고 하드웨어 자원을 효율적으로 관리할 수 있도록
다양한 기능을 제공
운영체제의 구성요소
- 사용자
컴퓨터를 사용하는 사람, 장치 또는 다른 컴퓨터
- 소프트웨어
기능 수행을 위한 모든 프로그램
1. 시스템 소프트웨어: 하드웨어 자원을 관리하고 응용 프로그램의 실행을 지원. ex) 장치 드라이버
2. 유틸리티: 보조적인 역할로 시스템을 유지하고 성능을 개선. ex) 프로세스 관리자, 디스크 조각 모음
3. 응용 프로그램: 특정 작업을 수행하는 목적. ex) 웹 브라우저, 게임, 동영상 편집 프로그램
- 하드웨어
컴퓨터를 구성하는 물리적인 장치. ex) CPU, 메모리, 주변장치
운영체제의 역할
- 하드웨어 및 사용자, 응용 프로그램, 시스템 프로그램 사이에서 인터페이스를 제공
- 하드웨어 자원을 효과적으로 활용하기 위해 조정 및 관리
- 응용 프로그램을 제어
- 외부 사용자로 부터 컴퓨터 시스템을 보호하고 입출력을 제어하며 데이터를 관리
운영체제의 목적
1) 편리성
사용자가 프로그램을 실행할 수 있는 환경을 제공해야 한다.
2) 효율성
시스템 성능을 향상해야 한다.
- 처리량(throughput): 단위 시간당 처리하는 작업량
- 지연/응답 시간: 작업을 등록한 후 반응을 얻기까지 걸린 시간
- 신뢰도: 하드웨어, 소프트웨어 실패 없이 주어진 기능을 수행할 수 있는 능력
- 사용 가능도: 사용자가 일정 기간 동안 컴퓨터를 실제로 사용한 시간
3) 제어 서비스 향상
시스템 성능 향상을 위해 새로운 기능을 도입하는 것을 허용하고 시스템을 확장한다.
운영체제의 기능
운영체제 기능 - 자원 관리
1) 메모리 관리
메인 메모리와 보조기억장치를 구분하여 메모리를 관리
- 메인 메모리
각 프로세스를 실행할 수 있도록 충분한 공간을 확보하고 메모리 사용을 관리한다.
- 어느 부분을 사용하고 누가 사용하는지 점검
- 저장할 프로세스를 결정
- 할당 및 회수 방법을 결정
- 보조기억장치 관리
메인 메모리는 공간이 제한되어 있어 모든 데이터와 프로그램을 메인 메모리에 계속 저장할 수 없다.
응용 프로그램은 실행되기 전까지 보조기억장치에 저장하여 데이터와 함께 관리하도록 한다.
- 빈 여유 공간을 관리
- 새로운 파일을 작성할 때 저장 장소를 할당
- 메모리 접근 요청을 스케줄링 (CPU 스케줄링)
- 파일을 생성하고 삭제
2) 프로세스 관리
프로세스는 실행 중인 프로그램으로 CPU 프로세서, 메모리, 파일, 입출력 장치와 같은 하드웨어 자원을 제공받아야 한다.
이러한 자원은 프로세스를 생성할 때 제공하거나 실행 중에 할당할 수 있다.
시스템이 정의한 시스템 코드를 수해 아하는 운영체제 프로세스와 사용자가 직접 작성한 사용자 코드를 수행하는 사용자 프로세스로 구분한다.
- 프로세스와 스레드를 스케줄링
- 사용자 프로세스와 시스템 프로세스를 생성하고 제거
- 프로세스 중지와 재수행
- 프로세스 동기화 제공
- 프로세스 통신 방법 제공
- 교착상태 방지 방법을 제공
3) 주변 장치 관리
주변 장치와 사용자 간의 인터페이스로서 장치 드라이버를 통해 입출력 장치와 상호작용한다.
- 데이터 임시 저장 기능(버퍼링)을 제공
- 드라이버 인터페이스(장치 드라이버)를 제공
4) 파일 관리
입출력 파일의 위치, 저장, 검색 관리를 수행한다.
- 파일 생성 및 삭제
- 디렉터리 생성 및 삭제
- 프로세스 실행 시 보조기억장치에 있는 파일 정보를 제공
- 안전한 저장장치에 파일을 저장
- 외부 사용자 접근 제어로 자원을 보호
운영체제 기능 - 시스템 관리
시스템 보호, 네트워킹, 명령 해석기 등 기능을 제공한다.
1) 시스템 보호 (사용자 권한 부여)
프로그램, 프로세스, 사용자의 접근을 제어한다. 파일 사용 권한을 부여하고 데이터를 암호화하는 등의 서비스를 제공하여 데이터와 시스템을 보호한다.
2) 네트워크
운영체제는 네트워크에 연결된 프로세스가 원활한 통신을 하기 위해 경로 설정, 접속 정책, 충돌, 보안 등 문제를 다룬다.
3) 명령 해석기
사용자가 대화형으로 입력한 명령어를 이해하고 실행하는 사용자와 운영체제 사이의 인터페이스이다.
명령 해석기는 인터페이스 역할을 할 뿐 운영체제는 아니다.
운영체제의 종류
1) 일괄 처리 시스템
작업을 올리는 시간과 해제하는 시간 낭비를 줄이기 위해 데이터 발생 시 즉시 처리하지 않고 일정 기간 동안 모아 두었다 한 번에 처리하는 시스템이다.
입출력 장치가 프로세서보다 속도가 느려 프로세서가 자주 유휴 상태가 되는데 이를 위해 버퍼링과 스풀링 방법이 도입되었다.
- 버퍼링: 프로세서와 입출력 장치 속도 차이로 유휴 기간이 없도록 입출력 장치 별로 버퍼를 두어, 프로세서가 연산할 때 동시에 다른 작업을 입출력할 수 있게 한다. 버퍼는 프로세서가 다른 작업을 처리하는 동안 다음으로 처리할 작업을 미리 읽어 저장해두는 메모리이다.
- 스풀링: 속도가 빠른 디스크를 버퍼처럼 사용하여 입출력 장치에서 미리 읽는 것이다. 버퍼링과 다르게 다양한 작업의 입출력과 계산을 동시에 할 수 있다.
2) 다중 프로그래밍 시스템
여러 프로그램을 메모리에 적재한 후 한 프로그램에 프로세서를 사용하다가 입출력과 같은 동작으로 프로세서 사용을 중지하여 유휴 시간이 발생했을 때, 다른 프로그램이 프로세서를 사용할 수 있도록 하는 시스템이다.
프로세서 사용률이 증가하고 응답 시간이 빨라지므로 사용자는 프로그램이 동시에 실행되는 느낌을 받을 수 있다.
3) 시분할 시스템
프로세서가 다중 작업을 교대로 수행하며 응답시간 최소화를 목적으로 한다. 각 프로세스마다 CPU 프로세서를 사용할 수 있는 시간 (time slice) 또는 규정 시간량 (quantum)을 할당하여 주어진 시간에서만 프로세서를 사용할 수 있게 한다.
4) 다중 처리 시스템
둘 이상의 프로세서를 사용하여 동시에 둘 이상의 프로세스를 지원한다.
5) 실시간 처리 시스템
사용자가 실제로 원하는 시간 내에 문제를 해결할 수 있도록 해주는 처리 방식을 말한다.
6) 분산 처리 시스템
시스템마다 독립적인 운영체제와 메모리로 운영하며 필요에 따라 통신을 하는 시스템이다.
운영체제의 역사
시기 | 운영체제 | 특징 |
0기 (1940년대) | - | 기계어 사용 순차적인 작업 처리 |
1기 (1950년대) | 일괄 처리 | 작업별로 처리 버퍼링, 스풀링 방법 도입 운영체제 등장 |
2기 (1960년 초반) | 대화형 | 작업시간 예측이 어려움 문서 편집기, 게임 응용 프로그램 키보드, 모니터 |
3기 (1960 후반) | 시분할 다중 프로그래밍 다중 처리 다중 사용자 |
다중 프로그래밍 기술 개발 운영체제를 고급 언어(C 언어)로 작성 |
4기 (1970 후반) | 분산 다중 모드 |
개인용 컴퓨터 등장 일괄처리, 시분할, 실시간, 다중 프로그래밍 기능 제공 LAN, TCP/IP |
5기 (1990년대) | 클라이언트/서버 | 웹 시스템 서버 과부하 |
6기(2000년대) | P2P 시스템 모바일 시스템 클라우드 컴퓨팅 사물 인터넷 |
메신저 및 파일 공유 네트워크 기반 분산 및 병렬 시스템의 보편화 |
'Computer Science 기본 지식 > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스 동기화 (0) | 2021.01.15 |
---|---|
[운영체제] 프로세스 스케줄링 (0) | 2021.01.14 |
[운영체제] 프로세스와 스레드 (0) | 2021.01.13 |
[운영체제] 명령어 구조와 사이클 / 인터럽트 / 커널 (0) | 2021.01.12 |
[운영체제] 컴퓨터 시스템의 구성 (0) | 2021.01.11 |