티스토리 뷰

[한빛아카데미] 운영체제 책으로 학습한 내용을 정리한 것입니다.

 

* 운영체제(Operation System)

- 운영체제는 컴퓨터 시스템에서 사용자가 하드웨어에 접근할 수 있는 유일한 수단

- 사용자가 응용 프로그램을 실행할 수 있는 기반 환경을 제공하여 컴퓨터를 편리하게 사용할 수 있도록 도와주고, 하드웨어를 효율적으로 사용할 수 있도록 다양한 기능을 제공하는 소프트웨어

 

* 컴퓨터 시스템 구성

- 사용자 : 어떤 일(작업)을 수행하려고 컴퓨터를 사용하는 사람이나 장치, 다른 컴퓨터를 의미함

- 소프트웨어 : 컴퓨터가 기능을 수행하는데 필요한 모든 프로그램을 의미하며, 아래 세가지로 구성됨

  1) 시스템 소프트웨어 : 컴퓨터 자원을 관리하고 응용 프로그램의 실행을 지원하여 컴퓨터를 제어하는 프로그램

  2) 유틸리티 : 응용 프로그램보다 작지만 컴퓨터의 여러 처리 과정을 보조하여 시스템을 유지하고 성능을 개선하는 프로그램으로, 운영체제를 돕는 역할을 함

  3) 응용 프로그램 : 특정 작업을 수행하려는 목적, 즉 어떤 문제를 해결하려고 사용자나 전문가가 만든 프로그램

- 하드웨어 : 기본 연산 자원을 제공하는 프로세서(CPU, 중앙처리장치), 메모리, 주변장치 등으로 구성됨

 

* 운영체제의 역할

- 조정자 : 운영체제는 이 운영 요소를 적절하게 사용할 수 있도록 제어하면서 사용자와 응용 프로그램 간에 통신할 수 있도록 함

- 자원 할당자나 관리자 : 각 응용 프로그램에 필요한 자원을 할당하며, 컴퓨터 시스템을 공정하고 효율적으로 운영하려고 자원을 할당하는 방법을 결정하는 관리자 역할도 함

- 응용 프로그램과 입출력장치 제어자 : 다양한 입출력장치와 응용 프로그램을 제어하는 역할을 하며, 입출력장치를 동작시키고 통제하는 핵심 역할을 함

- 보통은 사용자와 하드웨어 사이의 중간 매개체로 응용 프로그램의 실행을 제어하고, 자원을 할당 및 관리하며, 입출력 제어 및 데이터 관리와 같은 서비스를 제공하는 소프트웨어로 정의

 

* 운영체제의 발전 목적

- 편리성 : 사용자에게 편리한 환경 제공

- 효율성 : 시스템 성능 향상(처리량 향상, 지연/응답시간 단축, 신뢰도 향상, 사용 가능도 향상)

- 제어 서비스 향상 : 입출력장치의 동작 관리 및 제어, 시스템 오류 예방

 

* 운영체제의 기능

1) 자원 관리

  (1) 메모리 관리(메인 메모리/보조기억장치 관리)

  (2) 프로세스 관리 

  (3) 주변장치(입출력장치) 관리 

  (4) 파일(데이터) 관리

 

2) 시스템 관리

  (1) 시스템 보호(사용자 권한 부여)

  (2) 네트워킹(통신)

  (3) 명령 해석기

 

* 운영체제의 발전 과정

연도 운영체제 특징
1940년대 - 운영체제 없음
(작업별 순차 처리)
- 기계어를 직접 사용
- 단순 순차(직렬) 처리
1950년대 - 일괄 처리 시스템 - 운영체제인 효시인 IBM 701 개발
- 작업별로 일괄 처리
- 버퍼링, 스풀링 방법 등장
1960년대 - 다중 프로그래밍 시스템
- 시분할 시스템
- 다중 처리 시스템
- 실시간 처리 시스템
- 가상 기억장치 등장
- 다중 프로그래밍, 다중 처리, 시분할 처리 등 개념 등장
- 운영체제를 고급 언어로 작성
- 데이터 통신 지원용 운영체제 사용
1970년대 초반 - 다중 모드 시스템
- 범용 시스템
- 일괄 처리, 시분할 처리, 실시간 처리, 다중 프로그래밍 등을 제공하는 다중 모드 시스템 등장
- 장치의 독립성 제공
- TCP/IP 통신 표준 활성화
- 운영체제가 네트워크와 보안을 아우르는 수준으로 발전
1970년대 중반 - 분산 처리 시스템 - 각종 응용 프로그램 개발 및 데이터베이스 활용 확대
- 네트워크 기술의 발전
- 하드웨어에 운영체제 개념이 포함된 펌웨어 개념 등장
1990년대 - 병렬 계산과 분산 계산 - 월드와이드웹의 등장으로 분산 컴퓨팅 증가
- GUI 강화
- 개인용과 서버용 운영체제의 보편화
2000년대 - 모바일 및 임베디드
- 가상화 및 클라우드 컴퓨팅
- 네트워크 기반의 분산 및 병렬 운영체제의 보편화
- 모바일 장치와 가전제품을 위한 모바일 및 임베디드 운영체제의 보편화
- 다양한 기능, 확장성과 호환성 극대화 
- 다양한 통신망의 확대와 개발형 시스템 발달
- 여러 운영체제가 한 시스템의 자원을 공유할 수 있게 해주는 서버 가상화 기술의 확산
- 컴퓨팅 자원, 스토리지, 소프트웨어 등을 사용자에게 서비스 형태로 제공하는 클라우드 컴퓨팅의 등장

 

 

* 운영체제의 구조

1) 단일 구조 운영체제

- 초기에 생겨난 가장 보편적인 형태로, 운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재한 후 시스템 호출만으로 사용 가능

- 작고 간단하면서 시스템 기능이 제한된 구조로, 대표적인 예로 도스가 있음

- 대다수의 기능을 최소한 영역으로 제공하는데 한 계층으로는 결합할 수 없는 많은 기능으로 구성되어 있음

- 모듈이 효율적으로 분할 되어 있지 않음

- 커널에는 일 시스템, 프로세서 스케쥴링, 메모리 관리 등 포함되며, 시스템 호출을 하여 또 다른 운영체제 기능을 제공

 

[단일 구조 운영체제 예; 도스]

출처 : https://wonit.tistory.com/80

 

[장점]

- 대부분의 기능을 커널에 그룹화해서 구현하므로, 직접 통신하여 시스템 자원을 효율적으로 관리할 수 있음

 

[단점]

- 커널 크기가 상대적으로 커지면서 버그의 원인이나 기타 오류를 구분하기 어려움

- 새 기능을 추가하는 수정과 유지 보수가 매우 어려움

- 동일한 메모리에서 실행하므로 한 부분에서 발생한 문제 때문에 시스템 전체에 심각한 영향을 줄 수 있음

- 악성 코드로 피해를 입기 쉬움

 

2) 계층 구조 운영체제

- 비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성함

- 최하위 계층(계층 0)인 하드웨어에서 최상위 계층(계층 5)인 사용자 인터페이스까지 다수의 계층(수준)으로 구성되며, 각 계층은 인접한 상위나 하위에 있는 계층과 상호작용함

- 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 시스템 호출 발생하여 단일 구조보다 성능은 떨어짐

 

[장점]

- 모듈화로 단일 구조 운영체제보다 모듈화가 잘 되어 있어 계층 구조에서는 시스템 검증과 오류 수정을 쉽게 할 수 있음

 

[단점]

- 계층을 정의하기 어렵고, 각 계층은 자신의 하위 계층만 사용할 수 있으므로 신중히 설계해야 함

- 대형 시스템의 프로세서 스케줄러에서 메모리에 적재할 수 있는 것보다 활동 중인 프로세스를 더 많이 처리하려면 Swapping 기능 필요

- 모든 계층이 시스템에 제한 없이 접근할 수 있어 오류나 악성 코드에 민감하게 반응할 수 있음

 

3) 마이크로 커널 구조 운영체제

- 앞서 유닉스 운영체제도 기능을 확장하고 커널이 커지면서 관리하기 어렵고 디버깅이 쉽지 않음

- 단일 커널의 문제점을 해결하기 위해 1980년대 카네기메론대학교에서는 모듈화된 마이크로 커널(Micro-Kernel)을 사용하여 매크(Mach)를 만들었음

- 커널에 최소 기능만 포함시켜 크기를 대폭 줄이고 기타 기능은 사용자 공간으로 옮겨 사용자 영영ㄱ에서 수행하는 서버 구현함

 

[마이크로 커널 구조 예]

출처 : https://wonit.tistory.com/80

[장점]

- 운영체제 서비스를 사용자 영역의 독립적인 서버에서 수행하기 때문에 서버에서 잘못 수행하더라도 다른 서버와 커널에 치명적인 영향을 주지 않음

- 운영체제의 많은 기능을 사용자 영역의 서버로 구현할 수 있기 때문에 서버 개발이 용이하고, 운영체제의 기능을 쉽게 변경할 수 있음

 

[단점]

- 모듈화 정도가 높아 확장성, 이식성, 규모 확장성이 높지만, 모듈 간에 통신이 빈번하게 발생하여 성능이 떨어질 수 있음

- 응용 프로그램과 서버 간에 자료를 교환하려고 커널을 출입하는 문맥 교환 때문에 속도가 느림

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함