반응형
운영체제의 개요
운영체제의 역할
- 운영체제?
- 컴퓨터의 하드웨어 자원을 관리
- 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 시스템 소프트웨어
컴퓨터 시스템의 운영
- 운영체제는 컴퓨터 시스템의 자원을 제어 및 관리하여 컴퓨터 시스템을 효율적으로 운영하는 역할
- 시스템 자원
- 하드웨어 자원 : CPU, 메모리, 키보드, 마우스, 네트워크 카드 등
- 소프트웨어 자원 : 프로그램, 데이터 등
- 즉, 응용 프로그램들의 실행을 위해 자원들이 적절히 활용되도록 제어하고 관리하는 역할
사용자 지원
- 사용자가 편리하게 컴퓨터를 사용할 수 있도록 지원 → GUI(Graphical User Interface) 인터페이스 제공 등
- 사용자가 내린 명령을 해석하여 실행, 사용자와 하드웨어 사이의 매개체 역할
반응형
컴퓨터 시스템과 운영체제
- 옛날 옛적 운영체제가 없었던 시절에는 사용자가 응용 프로그램을 수행시키면 응용 프로그램이 직접 컴퓨터 시스템의 자원을 제어했다. → 개발자가 하드웨어 제어 방법을 알고 있어야 했음.
- 그리고 하나의 하드웨어를 여러 사용자가 공유해서 사용하는 경우에 응용 프로그램들끼리 효율적으로 서로 자원을 나눠 쓰기가 어려워 컴퓨터 시스템이 제대로 동작하지 못함
- 위의 문제점들을 극복하기 위해 하드웨어와 응용 프로그램 사이에 운영체제를 두고 하드웨어에 대한 제어는 운영체제에게 전적으로 맡김
- 응용 프로그램과 하드웨어는 서로 몰라도 된다. 운영체제가 그 사이에서 응용 프로그램 대신 하드웨어를 제어해주고, 그 결과를 응용 프로그램에게 제공한다.
- 여러 응용 프로그램이 동시에 수행되더라도 운영체제가 중간에서 충돌 없이 자원을 효율적으로 나눠 준다.
- 이러한 기능으로 운영체제는 컴퓨터 시스템이 안정적이고 효율적으로 동작할 수 있게 만들어준다.
- 응용 프로그램과 하드웨어 사이의 완벽한 매개체가 되려면 응용 프로그램이 직접적으로 하드웨어에 접근하는 것을 막아야 한다. 괜히 이것저것 건드렸다가 시스템의 안정성을 보장할 수 없게 되기 때문이다.
- 해결책으로 슈퍼바이저 모드와 보호 모드가 제공된다.
- 슈퍼바이저 모드(= 커널 모드) : 하드웨어를 직접 제어, CPU의 명령어를 사용할 수 있다. 운영체제의 커널이 동작되는 모드이다.
- 보호 모드(= 사용자 모드) : 하드웨어를 직접 제어하는 CPU의 명령어를 사용할 수 없다. 응용 프로그램이 동작되는 모드이다.
- 따라서 하드웨어를 직접적으로 제어하고 싶으면 운영체제에게 슈퍼바이저 모드로 변경해달라고 요청해야 한다. 그러면 보호 모드에서 슈퍼바이저 모드로 전환이 되고 커널이 동작하여 하드웨어 제어를 할 수 있다. 이때 응용 프로그램이 운영체제에 서비스를 요청하는 메커니즘을 시스템 호출이라 한다.
반응형
커널(Kernel)
- 응용 프로그램과 하드웨어 수준의 처리 사이의 가교 역할을 하는 운영체제의 핵심 요소이다.
- 일체형 커널(Monolithic kernel) : 운영체제의 모든 서비스가 커널 내에 포함.
- 장점 : 커널 내부 요소로 존재하는 여러 서비스들이 서로 효율적으로 상호작용 할 수 있음.
- 단점 : 모든 요소가 커널 내부에 존재하기 때문에 하나의 요소에서라도 오류가 발생하면 시스템 전체에 장애를 일으킴.
- 운영체제 : UNIX, Linux
- 마이크로 커널(Microkernel) : 운영체제의 대부분의 요소들을 커널 외부로 분리. 커널 내부에는 메모리 관리, 멀티태스킹, 프로세스 간 통신(IPC) 등의 최소한의 요소들만 남겨 놓음.
파일 시스템, 장치 드라이버, 네트워크 프로토콜 등은 보호 모드에서 동작하도록 분리.- 장점 : 새로운 서비스를 추가하여 운영체제 확장이 쉬움. 커널 외부 요소에 문제가 발생하더라도 커널 자체에는 영향이 없기 때문에 유지보수 용이 → 안정성 우수
- 단점 : 커널 외부에 존재하는 운영체제들의 요소들 사이에 데이터 전달이 필요한 경우에는 프로세스 간 통신(IPC)을 통해야 함. → 성능 저하 발생
반응형
운영체제의 구성
프로세스 관리자
- 프로세스(process) : 실행 중인 프로그램 또는 작업(job)
- 프로세스 관리자는 프로세스들을 생성, 삭제하며 CPU에 할당하기 위한 스케줄 결정
- 각 프로세스의 상태(준비, 실행, 대기 등)를 관리하며 상태 전이 처리
메모리 관리자
- 메모리, 즉 주기억장치를 제어
- 주기억장치 공간에 대한 각각의 요구가 유효한지 체크, 적법한 요구면 메모리 할당.
- 주기억장치를 반환할 시간이 되면, 회수
- 운영체제 자신이 점유하고 있는 주기억장치의 공간 지킴
- 다른 응용 프로그램이 이 공간에 들어올 수 있게 하면 안 된다.
장치 관리자
- 컴퓨터 시스템의 모든 장치 관리
- 시스템 설계자에 의해 결정된 스케줄링 기법을 기반으로 하여 시스템의 모든 장치를 가장 효율적으로 할당
- 장치 관리자는 할당, 작동을 시작, 마지막으로 장치 반환
파일 관리자
- 컴파일러, 인터프리터, 어셈블러, 유틸리티 프로그램, 데이터 파일과 응용 프로그램을 포함하는 시스템의 모든 파일 관리
- 파일의 접근 제한 관리, 파일을 열어 자원 할당, 파일을 닫아 자원을 회수
운영체제의 유형
일괄처리 운영체제
- 초창기 컴퓨터에서 사용되었던 유형, 작업을 모아서 한 번에 처리
- 사용자의 상호작용 없이 순차적으로 실행
- 효율성 기준 : 주어진 전체 시간 안에 처리된 작업의 수를 의미하는 처리량(throughput)과 수 시간이나 수일 동안 측정된 반환시간(turnaround time)에 의해 평가
- 반환시간 : 작업의 생성 시점부터 종료 시점까지의 소요 시간
대화형 운영체제(시분할 운영체제)
- 응답시간 측면에서 일괄처리보다 빠르지만 실시간 운영체제보다는 느리다.
- 이용자가 자신의 프로그램을 디버깅할 때 좀 더 빠른 시간을 요구하는 이용자의 욕구를 만족시키기 위해 개발
- 터미널을 통하여 사용자가 직접 컴퓨터에 명령을 내릴 수 있음
- 이용자에게 즉각적인 피드백을 제공, 응답시간은 사용 중인 이용자의 수에 따라 수 분 또는 수 초 안에 처리
- 응답 시간 : 요청한 시점부터 반응이 시작되는 시점까지의 소요시간
실시간 운영체제
- 모든 운영체제 중 가장 빠른 응답 시간을 가짐
- 처리의 결과가 현재의 결정에 영향을 주기 때문에 데이터의 처리 속도가 극도록 빨라야 하는 환경에서 사용
- 우주선 비행 시스템, 미사일 제어, 증권거래 관리 시스템, 은행 입출금 시스템 등
하이브리드 운영체제
- 일괄처리와 대화형 운영체제의 결합
- 각 이용자가 터미널을 통해 접속, 빠른 응답 시간을 얻을 수 있음
- 대부분의 대형 컴퓨터 시스템은 하이브리드 운영체제
반응형
운영체제의 역사
1940년대와 1950년대
- 1940년의 초기 전자식 디지털 컴퓨터에는 운영체제가 없었다.
- 프로그램은 기계적인 스위치에 의해 입력되었음
- 기계언어 프로그램은 천공 카드 위에 입력, 프로그램의 처리속도를 빠르게 하기 위해 어셈블리 언어 개발
- 1950년대는 한 번에 오직 하나의 작업만을 수행, 컴퓨터 시스템을 최대한 활용하기 위해 작업 간 변환을 원활하게 하도록 설계
- 프로그램과 데이터가 일괄적으로 입력되므로 단일 흐름 일괄처리라고도 부른다.
1960년대
- 일괄처리 시스템이지만 몇 개의 작업을 동시에 수행시켜 컴퓨터의 자원을 보다 효율적으로 사용하는 것이 가능
- 카드 판독기, 카드 천공기, 프린터, 테이프 드라이버, 디스크 드라이버 등 많은 주변장치 포함
- 운영체제 설계자는 몇 개의 작업이 메모리에 동시에 있게 하는 멀티프로그래밍 개념 개발
- 멀티프로그래밍 : CPU를 사용 중인 하나의 작업이 입출력 작용을 완료하기 위해 대기하고 있는 동안 다른 작업이 이 대기 중인 CPU를 사용할 수 있게 되어 다양한 작업을 혼합하여 수행
- 다중 대화식 사용자를 위한 운영체제 개발
- 터미널을 통해 사용자와 컴퓨터가 상호작용
- 시분할 시스템
- 동시적인 대화식 사용자의 멀티프로그래밍을 위해 개발
- 1960년대의 많은 시분할 시스템은 일괄처리는 물론 산업처리 제어 시스템과 같은 실시간(real-time) 응용을 지원하는 멀티모드 시스템이었음
1970년대
- 시스템이 주로 일괄처리, 시분할 처리 및 실시간 처리를 지원하는 멀티모드 시분할 시스템이었음
- CPU의 속도가 놀랄 정도로 발전, 하지만 입출력 속도는 느려 하나의 CPU를 여러 개의 프로그램이 공유하여 사용하는 멀티프로그래밍 기술이 발전
- 근거리 지역 네트워크(Local Area Network, LAN)에서의 통신은 이더넷(Ethernet) 표준에 의해 실용화되고 경제적으로 되었음
- 정보 보호를 위한 보안문제가 증대됨과 아울러 암호화가 많은 주목을 받게 됨
1980년대
- 컴퓨터 구성요소의 가격 대비 성능이 크게 향상, 하드웨어는 부분적인 기능을 쉽게 교체할 수 있는 카드를 이용하게 되어 융통성 향상
- 운영체제 기능이 하드웨어 자체에 포함된 새로운 개념인 펌웨어(firmware)가 나오게 되었음.
- 펌웨어 : ROM에 영구히 기억되는 프로그램
- 2개 이상의 프로세서를 이용하는 멀티프로세서 환경으로 변화
- 개인용 컴퓨터 보급화
- 네트워크상에서 다양한 서비스를 필요로 하는 클라이언트와 하드웨어 또는 소프트웨어 구성원으로 서비스를 수행하는 서버로 구성되는 클라이언트/서버 모델이 널리 퍼짐
1990년대
- 병렬 처리와 분산 처리 발전
- 네트워크와 멀티미디어 처리 기술 발전
- 운영체제는 명령어 기반에서 벗어나 그래픽 사용자 인터페이스(GUI) 강화
- 선점형 멀티태스킹과 멀티쓰레딩, 가상 메모리와 메모리 보호 등이 보편화
2000년대와 그 이후
- 모바일과 임베디드 운영체제의 시대
- 다양한 통신망이 확대되고 개방형 시스템이 발달
- 운영체제는 확장성과 호환성을 높이고 사용자 편의성을 더욱 높이는 방향으로 발전
- 네트워크 기반의 분산 및 병렬 운영체제 보편화, 클라우드 환경의 운영체제가 새로이 등장
- ICT와 융합된 가전제품이 등장하면서 모바일 및 임베디드 운영체제가 보편화
반응형