운영체제
- 하드웨어 및 사용자, 응용 및 시스템 프로그램 사이에서 인터페이스 제공
- 프로세서·메모리·입출력장치·통신장치 등 컴퓨터 자원을 효과적으로 활용하기 위한 조정 및 관리
- 메일 전송·파일 시스템 검사·서버 작업 등 높은 수준의 서비스를 처리하는 응용 프로그램 제어
- 자양한 사용자에게서 컴퓨터 시스템을 보호하기 위한 입출력 제어 및 데이터 관리
운영체제의 발전 목적
- 편리성
- 프로그램 개발 환경뿐만 아니라 응용 프로그램에 대한 사용자 인터페이스, 즉 사용자와 컴퓨터 시스템이 정보 및 명령을 상호 교환할 수 있는 인터페이스 제공
- 효율성
- 사용자가 많은 대형 컴퓨터 시스템에서 특히 중요
- 운영체제는 각 프로그램을 유기적으로 결합하여 시스템 전체 성능을 향상
- 시스템 성능의 평가 기준: 처리량 / 지연·응답시간 / 신뢰도 / 사용 가능도(가동률)
- 제어 서비스 향상
- 시스템 확장, 효율적 운영을 위해 새로운 기능의 효과적인 개발을 허용하는 방법으로 발전
- 입출력장치의 동작 관리 및 제어, 시스템 오류 예방 등으로 컴퓨터 자원을 여러 사용자에게 효율적으로 할당하고 관리할 수 있도록 제어 서비스를 발전
운영체제의 기능
자원관리
- 메인 메모리 관리
- 메인 메모리: 프로세서가 직접 주소로 지정할 수 있는 유일한 메모리
- ① 메모리의 어느 부분을 사용하고, 누가 사용하는지 점검
- ② 메모리에 저장할 프로세스 결정
- ③ 메모리를 할당하고 회수하는 방법 결정
- 보조기억장치 관리
- ① 빈 여유 공간 관리
- ② 새로운 파일 작성 시 저장 장소 할당
- ③ 메모리 접근 요청 스케줄링
- ④ 파일 생성 및 삭제
- 프로세스 관리
- ① 프로세스와 스레드 스케줄링
- ② 사용자 프로세스와 시스템 프로세스 생성·제거
- ③ 프로세스 중지 및 재수행
- ④ 프로세스 동기화 방법 제공
- ⑤ 프로세스 통신 방법 제공
- ⑥ 교착 상태(deadlock)를 방지하는 방법 제공
- 주변장치 관리
- 운영체제는 특수 프로그램인 장치 드라이브를 사용하여 입출력장치와 상호작용
- 장치 드라이버는 특정 하드웨어장치와 통신할 수 있는 인터페이스를 제공하므로 특정 하드웨어에 종속된 프로그램
- ① 임시 저장(buffer-cashing) 시스템 기능 제공
- ② 일반 장치용 드라이버 인터페이스 제공
- ③ 특정 장치 드라이버 제공
- 파일(데이터) 관리
- ① 파일/디렉터리 생성·삭제
- ② 보조기억장치의 파일 맵핑
- ③ 안전한(비휘발성) 저장장치에 파일 저장
시스템 관리
- 시스템 보호(사용자 권한 부여)
- 보호: 컴퓨터 자원에서 프로그램·프로세스·사용자의 접근 제어 방법
- 운영체제는 파일 사용 권한 부여, 데이터 암호화 등 서비스 제공, 데이터와 시스템 보안
- 컴퓨터 시스템에서는 여러 프로세스가 동시에 실행 가능하므로 상호 보호해야 함
- 네트워크로 파일 공유 사이트에 접속 시 다른 사용자의 프로그램으로부터 보호
- 네트워킹
- 프로세서는 다양한 방법으로 구성된 네트워크 이용
- 완전 접속과 부분 접속 방법으로 연결
- 연결된 프로세서가 통신을 할 때는 경로 설정·접속 정책·충돌·보안 등 고려(운영체제가 관리)
- 명령 해석기
- command interpreter
- 대화형으로 입력한 명령어를 이해하고 실행하는 사용자와 운영체제의 인터페이스
- 사용자가 입력한 명령은 명령 해석기가 제어문으로 운영체제에 전달
- 인터페이스 역할을 할 뿐 운영체제는 아님
- 커널과 분리하는 것이 좋음(명령 해석기의 인터페이스 변경 가능)
- 분리하지 않으면 사용자가 커널의 코드를 변경할 수 없어 인터페이스 변경 불가
운영체제의 발전 과정
1940년대
- 사용자가 기계어로 직접 프로그램 작성·실행하는 작업별 순차 처리 시스템
- 운영체제 개념이 존재하지 않음
- 컴퓨터에 필요한 모든 작업 프로그램에 포함
- 프로세서에는 명령어 저장 방법, 계산 대상, 결과 저장 위치와 방법, 출력 시점, 위치 등 모두 명령어로 명시적으로 표현
- 모든 작업을 예약으로 진행하여 문제가 발생
1950년대
- 일괄 처리 시스템
- 직렬 처리 기술과 동일
- 작업 준비 시간을 줄이기 위해 데이터가 발생할 때마다 즉시 처리하지 않고 데이터를 일정 기간 또는 일정량이 될 때까지 모아두었다가 한꺼번에 처리
- 작업별로 일괄 처리
- 버퍼링·스풀링 방법 등장
1960년대
- 장치 독립성: 프로그램을 다른 입출력장치와 함께 실행할 수 있는 것
- 다중 프로그래밍 시스템: 여러 프로그램을 메모리에 나눠 적재한 후 프로세서를 바꾸어 가며 여러 프로그램을 동시에 실행
- 시분할 시스템: 다중 프로그래밍 시스템 + 프로세서 스케줄링
- 다중 처리 시스템: 하나의 시스템에서 프로세서를 여러 개 사용하여 처리 능력을 높인 것
- 실시간 처리 시스템: 즉시 응답
- 가상 기억장치 등장
- 운영체제를 고급 언어로 작성
- 데이터 통신 지원용 운영체제 사용
1970년대
- 다중 모드 시스템
- 범용 시스템
- 장치의 독립성 제공
- TCP/IP 통신 표준 활성화
1970년대 중반
1990년대
- 병렬 계산과 분산 계산
- WWW 등장으로 분산 컴퓨팅 증가
2000년대 이후
- 모바일 및 임베디드
- 가상화 및 클라우드 컴퓨팅
- 네트워크 기반의 분산 및 병렬 운영체제의 보편화
운영체제의 유형
다중 프로그래밍 시스템
- 프로세스가 다른 작업 수행 시 입출력 작업 불가능하여 프로세서와 메인 메모리의 활용도가 떨어지는 일괄 처리 시스템의 큰 문제를 다중 프로그래밍의 도입으로 해결
- 프로세서가 유휴 상태일 때 실행 중인 둘 이상의 작업이 프로세서를 전환(인터리빙)하여 사용할 수 있도록 동작
- 여러 작업을 준비 상태로 두려면 이를 메모리에 보관하고, 일정 형태의 메모리를 관리해야 함
- 수행할 준비를 갖추고 있으면, 이 중 하나를 선택하는 결정 방법 필요
시분할 시스템
- 다중 프로그래밍을 논리적으로 확장한 개념으로 프로세서가 다중 작업을 교대로 수행
- 다수의 사용자가 동시에 컴퓨터의 자원을 공유할 수 있는 기술
- CTSS(Compatible Time Sharing System)
- 각 프로그램에 일정한 프로세서 사용 시간 또는 규정 시간량 할당
- 여러 사용자에게 짧은 간격으로 프로세서 번갈아 할당
다중 처리 시스템
- 단일 컴퓨터 시스템 내에서 둘 이상의 프로세서 사용(동시에 둘 이상의 프로세스 지원)
- 여러 프로세서와 시스템 버스·클록·메모리와 주변장치 등 공유
- 빠르고 프로세서 하나가 고장나도 다른 프로세서를 사용하여 작업 지속 가능
- 프로세서 간의 연결·상호작용·역할 분담 등을 고려해야 함
- 다중 처리 시스템을 구성하는 방법에는 비대칭(주종)적 구성과 대칭적 구성이 있음