CS 공부
운영체제 2020-1학기 중간고사 대비 2-3(운영체제의 서비스 제공) 본문
<운영체제의 서비스 제공>
부팅 서비스
컴퓨터 하드웨어 관리, 프로그램을 실행할 수 있도록 운영체제를 메인 메모리에 적재하는 과정
부트 로더
부트스트랩 로더(bootstrap loader)의 줄인 말로 하드디스크와 같은 보조 기억장치에 저장된 운영체제를 메인 메모리에 적재하는 ROM에 고정시킨 소규모 프로그램
사용자 서비스
프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 함
시스템 서비스
시스템의 효율적인 동작 보장
시스템 호출
프로그램이 운영체제의 기능을 서비스 받을 수 있는 프로그램과 운영체제 간의 인터페이스 제공
사용자 인터페이스 제공
사용자 인터페이스 : 사용자와 컴퓨터 간의 상호작용 발생 공간(CLI, 메뉴, GUI 등 구현)
CLICommand Line Interface(명령 라인 인터페이스)
사용자가 키보드 등으로 명령어 입력하여 시스템에서 응답 받은 후, 또 다른 명령어를 입력하여 시스템을 동작하게 하는 텍스트 전용 인터페이스.
사용자가 프롬프트에서 명령어를 입력하여 컴퓨터와 상호작용할 수 있고, 명령어 입력한 후 반드시 enter를 눌러야 함
메뉴 인터페이스
메뉴 등을 사용하여 시스템과 상호작용. 사용 매우 편리, 배우거나 기억해야 할 명령 없음(iPad나 휴대폰)
GUIGraphical User Interface(그래픽 사용자 인터페이스)
컴퓨터와 상호작용 할 수 있는 가장 보편적인 유형
윈도우 환경에서 사용자에게 정보와 작업을 표현하는 텍스트, 레이블이나 텍스트 탐색과 함께 그래픽 아이콘과 시각적 표시기, 버튼이나 스크롤바와 같은 위젯widget 그래픽 제어 요소를 사용
프로그램 실행
먼저 메모리에 적재 -> 프로세서 시간 할당
운영체제는 프로그램을 실행하려고 메모리 할당이나 해제 스케줄링등 중요 작용 처리
입출력 동작 수행
운영체제는 입출력 동작 직접 수행할 수 없는 사용자 프로그램 입출력 동작 방법 제공
파일 시스템 조작
디스크에서 파일을 열고 저장 삭제하는 등 다양하게 파일조작
디스크에 파일 저장하면 특정 블록에 할당 저장 파일을 삭제하면 파일 이름 제거되면서 할당한 블록이 자유롭게됨
운영체제는 파일 시스템 조작 서비스 제공 사용자가 파일 관련 작업을 쉽게 할 수 있게 함.
통신(네트워크)
프로세스가 다른 프로세스와 정보를 교환하는 방법
1) 동일한 컴퓨터에서 수행하는 프로세스 간의 정보 교환
2) 네트워크로 연결된 컴퓨터 시스템에서 수행하는 프로세스 간의 정보 교환
운영체제는 다중 작업 환경에서 공유 메모리를 이용하거나 메시지 전달로 다양한 유형의 프로세스와 통신 지원
오류 탐지
운영체제는 가능한 모든 하드웨어와 소프트웨어 수준에서 오류 탐지, 시스템 모니터링하여 조정함으로써 하드웨어 문제 예방
입출력 장치에 관련된 오류와 메모리 오버 플로, 하드디스크의 불량 섹터 검출, 부적당한 메모리 접근과 데이터 손상 등
운영체제는 다음 오류 유형을 감지 후 조치함
프로세서, 메모리 하드웨어와 관련된 오류 : 기억장치 메모리 오류, 정전
입출력장치 오류 : 테이프의 패리티 오류, 카드 판독기의 카드 체증jam, 프린터의 종이 부족
사용자 프로그램 오류 : 연산의 오버플로, 부적당한 기억장치 장소 접근, 프로세서 시간 과다 사용
시스템 서비스
사용자가 아닌 시스템 자체의 효율적 동작 보장하는 기능
여러 사용자가 사용하는 시스템에서 컴퓨터 자원 공유하여 시스템 자체의 효율성 높임
자원 할당
운영체제는 다수의 사용자나 작업 동시 실행 시 운영체제가 자원을 각각 할당하도록 관리
프로세서 사이클, 메인 메모리, 파일 저장 장치 등은 특수한 할당 코드를 갖지만, 입출력장치 등은 더 일반적인 요청과 해제 코드 가질 수 있음
계정
운영체제는 각 사용자가 어떤 컴퓨터 자원을 얼마나 많이 사용하는지 정보 저장 추적
이 정보는 사용자 서비스 개선을 위해 시스템 재구성하는 연구자에게 귀중한 도구가 됨
보호와 보안
운영체제는 다중 사용자 컴퓨터 시스템에 저장된 정보 소유자의 사용을 제한
서로 관련이 없는 여러 작업을 동시에 수행할 때는 한 작업이 다른 작업이나 운영체제를 방해하지 못하게 해야 함.
보호 : 시스템 호출 하려고 전달한 모든 매개변수의 타당성 검사하고, 시스템 자원에 모든 사용자 접근을 제어하도록 보장하는 것
시스템 호출
실행 중인 프로그램과 운영체제 간의 인터페이스, API(Application Programming Interfaces) 라고도 함
사용자 프로그램은 시스템 호출을 하여 운영체제의 기능 제공 받음.
핵심 커널 서비스와 통신, 새로운 프로세스의 생성과 실행, 하드웨어 관련 서비스 등이 있음
시스템과 상호작용하는 동작은 대개 사용자 수준 프로세스에서는 사용할 수 없으나, 시스템 호출을 하여 운영체제에 서비스를 요청할 수 있음
시스템 호출 방법
프로그램에서 명령이나 서브루틴의 호출 형태로 호출
시스템에서 명령 해석기를 사용하여 대화 형태로 호출
운영체제가 제공하는 일반적인 시스템 호출
프로세스 제어, 파일 조작, 장치 관리, 정보 유지 등
호출 서비스 | 설명 |
프로세스 제어 |
종료와 취소 적재와 실행 프로세스 생성과 종료 프로세스 속성 획득과 지정 대기와 대기 이벤트, 신호 이벤트 메모리 할당과 해제 |
파일 조작 | 파일 생성과 삭제 파일 열기와 닫기 파일 읽기와 쓰기, 파일 재배치 파일 속성 획득과 지정 |
장치 조작 | 장치 요구와 해제 장치 읽기와 쓰기, 재배치 장치 속성 획득과 설정 논리적 부착이나 장치제거 |
정보 관리 | 시간과 날짜의 설정과 획득 데이터의 설정과 획득 프로세스, 파일, 장치 속성의 설정과 획득 |
통신 | 통신 연결의 생성과 제거 메시지의 송수신 정보 상태 전달 원격장치의 부착 및 제거 |
단일구조 운영체제(모놀리식 커널 구조, 단일 구조 커널)
초기에 생겨난 가장 보편적 형태
운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재 후 시스템 호출만으로 사용
작고 간단하면서 시스템 기능이 제한된 구조
대다수 기능을 최소한의 영역으로 제공하는데 한 계층으로는 결합할 수 없는 많은 기능으로 구성
특징
대부분의 기능을 커널에 그룹화해서 구현, 직접 통신하여 시스템 자원을 효율적 관리
커널 크기가 상대적으로 커지면서 버그의 원인이나 기타 오류 구분 어려움
새 기능을 추가하는 수정과 유지 보수 매우 어려움
동일한 메모리에서 실행하므로 한 부분에서 발생한 문제로 시스템 전체에 심각한 영향 가능
악성 코드로 피해 입기 쉬움
계층 구조 운영체제
운영체제가 점점 커지고 복잡해지면서 순수 단일 구조만으로는 다루기가 어려워졌다. 이 문제를 해결하려고 등장
계층 구조에서는 비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성
사용자 프로세스의 요청을 수행할 때 여러 계층을 거쳐야 하므로, 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 시스템 호출 발생
호출 한 번으로 서비스를 받는 단일 구조보다는 성능 낮음
단일 구조 운영체제보다 모듈화가 잘 되어 있음
시스템 검증과 오류 수정 용이
첫 번째 계층은 기본 하드웨어 사용하여 기능을 만들어 나머지 시스템에 의문을 가지지 않고 오류를 수정 가능
첫 번째 계층의 오류를 수정하고 기능이 정확하다고 가정한 후 두 번째 계층 만듦(이 과정 반복)
특정 계층에서 오류 발견해도 하위 계층은 오류 수정했기 때문에 해당 계층에 오류가 없다고 할 수 있음
시스템을 계층으로 나누면 시스템 설계나 구현 단순해짐
계층 정의 어려움
각 계층은 자신의 하위 계층만 사용할 수 있으므로 신중히 설계해야함
대형 시스템의 프로세서 스케줄러에서 메모레이 적재할 수 있는 것보다 활동 중인 프로세스를 더 많이 처리하려면 교체 기능 필요
모든 계층이 시스템에 제한 없이 접근할 수 있어 오류나 악성코드에 민감하게 반응 할 수 있다.
마이크로 커널 구조 운영체제
운영체제 서비스를 사용자 영역의 독립적인 서버에서 수행, 서버에서 잘못 수행하더라도 다른 서버와 커널에 치명적인 영향을 주지 않음
운영체제의 많은 기능을 사용자 영역의 서버로 구현할 수 있기 때문에 서버 개발용이, 운영체제의 기능을 쉽게 변경 가능
모듈화 정도가 높아 확장성, 이식성, 규모 확장성이 높음
모듈 간 통신이 빈번하게 발생 하여 성능이 떨어질 수 있음
프로세스 간 통신 발생을 최소화시키는 것이 중요 과제
응용 프로그램과 서버 간에 자료를 교환하려고 커널을 출입하는 문맥 교환 때문에 속도가 느림
커널 내부에서 발생 지연이 적고 예측 가능하여 실시간 시스템에 활용
대표적인 운영체제 중 마이크로 커널 구조를 전적으로 선택한 것은 없지만, 모듈화된 구성 요소는 포함
운영 체제들의 목표
효율성(efficiency)
효율적인 운영체제는 적은 자원을 사용하여 결과를 빨리 보여주는 운영체제다. 같은 자원을 사용하더라도 높은 작업량(throughput)을 달성할 수 있어야 한다. 반대로 같은 작업량이라면 보다 적은 자원을 소비해야 한다.
안정성(robustness)
운영체제가 불안정하면 모든 작업이 따라서 불안해진다. 그러므로 운영체제는 안정성이 담보되어야 한다. 운영체제가 안정적이기 위해서는 사용자와 응용 프로그램의 안전(security) 문제와 하드웨어적인 보안(protection)의 문제를 처리할 수 있어야 하며, 시스템에서 문제 발생 시 결함 포용(fault tolerant) 기능을 수행할 수 있어야 한다.
확장성(scalability)
운영체제는 다양한 시스템 자원을 추가하거나 제거하는 것 등이 편리해야 한다. 즉 확장성이 좋아야 한다. 운영체제는 하드웨어의 종류와 상관없이 꽂으면 바로 실행할 수 있는 플러그 앤 플레이(Plug & Play) 기능을 제공하고, 앞으로 개발될 하드웨어도 어떠한 제약 없이 사용할 수 있도록 지원해야 한다. 확장성을 보장하려면 사용자의 편리성뿐만 아니라 하드웨어 제작자의 편리성도 고려해야 한다.
편리성(usability)
운영제체는 사용자가 편리하게 작업할 수 있는 환경을 제공해야 한다. 특정한 제약은 사용자를 불편하게 할 뿐 아니라 다양한 응용 프로그램의 제작을 막을 수 있다. 따라서 사용자와 응용 프로그램에 다양한 편리성을 제공하면서도 자원의 낭비 요소를 막을 수 있어야 한다.
'CS공부 > 운영체제' 카테고리의 다른 글
운영체제 2020-1학기 중간고사 대비 3-2 (0) | 2021.07.01 |
---|---|
운영체제 2020-1학기 중간고사 대비 3-1 (0) | 2021.07.01 |
운영체제 2020-1학기 중간고사 대비 2-2(다중 프로그래밍 ,시분할, 다중처리,실시간 처리, 분산처리 시스템) (0) | 2021.07.01 |
운영체제 2020-1학기 중간고사 대비 2-1(운영체제의 개념) (0) | 2021.07.01 |
운영체제 2020-1학기 중간고사 대비 1-2(컴퓨터 시스템의 동작) (0) | 2021.07.01 |