풀스택 웹🌐 개발자 지망생 🧑🏽💻
➕ 인공지능 관심 🤖
Categories
-
┣
▶ COMPUTER_SCIENCE
📂: 7 -
┣
▶ WEB
📂: 3 -
┣
▶ ETC
📂: 3-
┃
┣
ETCS
📄: 10 -
┃
┣
SUBBRAIN 개발기
📄: 5 -
┃
┗
YOS 개발기
📄: 1
-
┃
┣
-
┗
▶ AI
📂: 9-
┣
AITOOLS
📄: 3 -
┣
CV
📄: 2 -
┣
DEEP_LEARNING
📄: 1 -
┣
DATA_VIS
📄: 2 -
┣
GRAPH
📄: 1 -
┣
LIGHTWEIGHT
📄: 1 -
┣
MATH
📄: 1 -
┣
NLP
📄: 3 -
┗
STRUCTURED_DATA
📄: 2
-
┣
OS 정리-Chap 2-운영체제란
2. 운영체제란?
IT COOK BOOK 운영체제 (개정 3판, 구현회 저, 한빛 아카데미) 를 정리한 내용입니다.
운영 체제(Operating System)란 사용자를 위해 응용 프로그램 동작의 환경와 편의성을 제공하며, 하드웨어와 컴퓨터 자원을 관리하는 시스템 소프트웨어이다.
-
시스템 소프트웨어이란? : 응용 프로그램의 실행을 지원하고 컴퓨터를 제어하는 프로그램. 장치드라이버, 운영체제가 대표
-
커널(Kernel) 이란? : 시스템 호출, 인터럽트 및 예외에 응답하는 운영체제의 핵심 구성 요소. 메모리에 최우선 적재되고 종료될때까지 메모리에 머뭄, 자세한 건 운영체제의 구조 참조
운영체제의 목표
-
편리성 : 얼마나 사용자가 편리하게 사용할 수 있는가?
-
효율성 : 4가지로 나누어 진다.
-
처리량 : 단위 시간당 처리하는 작업량
-
응답시간 : 시스템이 작업을 의뢰한 후 반응을 얻을 때까지 걸린 시간
-
신뢰도 : 소프트웨어가 실패없이 주어진 기능을 수행할 수 있는 능력
-
가용성 : 사용자가 일정 기간 동안 오류나 보수 중이 아닌 정상 상태로 가동 가능한 비율.
-
-
제어 서비스 향상 : 시스템의 확장가능 정도, 입출력 장치의 동작 관리 및 제어
운영체제의 기능
자원 관리 기능
-
메모리 관리 : 아래의 프로세스 관리와 함께 프로그램의 실행에 필요
-
메인 메모리 : 프로세스 별 메모리 공간 관리, 할당 및 회수 방법 결정
-
보조 기억 장치 관리 : 메모리 접근 요청 스케줄링, 빈 여유공간 관리
-
-
프로세스 관리 : 프로세스와 스레드의 생성과 제거, 스케줄링, 동기화, 교착상태(deadlock) 방지
-
입출력 장치 관리 : 장치 드라이버를 이용해 입출력 장치 관리 및 인터페이스 제공
-
파일 관리 : 파일 생성/삭제, 디렉토리 생성/삭제, 파일 맵핑
시스템 관리 기능
-
시스템 보호(사용자 권한 부여) : 프로그램, 프로세스, 사용자의 컴퓨터 자원의 접근을 권한 관리, 암호화, 계정 생성 등을 통한 보안
-
네트워킹(통신) : 다른 시스템의 프로세스 간, 혹은 같은 시스템의 프로세스간의 통신 경로 설정, 접속 정책, 충돌, 보안 관리
-
명령 해석기(command interpreter) : 사용자나 프로그램이 대화형의 명령어를 운영체제에게 전달하는 인터페이스 역할을 함. 커널에 분리 되어 쉽게 변경되게 끔 되어있음, 사용자 인터페이스 (CLI, GUI 등) 제공
기타 기능
-
부팅(booting) 서비스 혹은 부스트스래핑(bootstrapping) :
ROM에 존재하는 부스트스트랩 로더를 통해 하드 디스크 같은 보조기억 장치에 저장된 운영체제를 메인 메모리에 적재하고, 초기화를 실시한다.
초기화는 시스템 장치 초기화, 시간 설정, 명령 해석기 적재와 준비 등을 한다. 이때, 시스템 장치 초기화는디렉토리, 파일 점검, 시스템 버퍼, 인터럽트 벡터와 운영체제 루틴 적재 등을 의미
-
오류 탐지 : 하드웨어, 소프트웨어 수준의 오류 탐지 및 시스템 모니터링, 기억장치 메모리 오류, 정전, 프린터 종이 부족, 오버플로, 프로세서 할당 시간 초과 등의 오류가 존재
-
서버 가상화(virtualization) : 물리적 시스템 하나에 각기 다른 환경의 논리적 시스템을 여러개 구성하는 방법, 하이퍼 바이저를 이용한 가상 머신을 주로 이용한다.
- 하이퍼 바이저 (hypervisor) : 호스트 컴퓨터에 가상 머신 환경의 다수의 운영체제를 실행하게 해주는 논리적 플랫폼.
베어메탈 기반은 호스트 기반과 달리 가상화 솔루션을 가지고 있는 시스템을 통해 가상화하며, 향상된 성능과 실시간 운영체제를 지원할 수 있지만, 대신 드라이버 등의 설치와 구성이 어렵다.
-
시스템 호출(System call): 실행 중인 프로그램과 운영체제 간의 인터페이스, API라고도 한다. 시스템 호출을 통해 운영체제의 기능을 사용할 수 있다.
주로 프로그램에서 명령이나 서브루틴 호출로 부르거나, 명령해석기를 통해 대화 형태로 호출한다.
운영체제의 일반적인 시스템 호출 서비스는 아래 표와 같다.
호출 서비스 | 설명 |
---|---|
프로세스 제어 | - 종료와 취소 - 프로세스 속성 획득과 지정 - 적재(load)와 실행 - 대기와 대기 이벤트, 신호 이벤트 - 프로세스 생성과 종료 - 메모리 할당과 해제 |
파일 조작 | - 파일 생성과 삭제 - 파일 읽기와 쓰기, 파일 재배치 - 파일 열기와 닫기 - 파일 속성 획득과 지정 |
장치 조작 | - 장치 요구와 해제 - 장치 속성 획득과 설정 - 장치 읽기와 쓰기, 재배치 - 논리적 부착이나 장치 제거 |
정보 관리 | - 시간과 날짜의 설정과 획득 - 데이터의 설정과 획득 - 프로세스, 파일, 장치 속성의 설정과 획득 |
통신 | - 통신 연결의 생성과 제거 - 정보 상태 전달 - 메시지의 송수신 - 원격 장치의 부착 및 제거 |
운영체제의 유형
일괄 처리 시스템(batch processing system)
작업을 바로 처리하지 않고 작업 별로 그룹으로 묶어 모아두었다가 한꺼번에 처리하는 방법, 가장 원시적이고 초기적인 형태의 유형이다.
장단 | 항목 |
---|---|
장점 | 각 작업 별 준비시간을 줄이고, 컴퓨터 자원을 여러 사용자가 공유할 수 있다. |
단점 | 1. 작업 중에 추가 작업 입력이 불가능하다. 2. 작업에 우선순위를 주기 어렵다 3. 작업 유형이 다양해질 수록 성능이 떨어진다. 4. 입출력 장치 속도에 따라 프로세스가 유휴 상태가 될 수 있다. |
단점을 해결하기 위해 다음과 같은 방법이 등장했다.
-
버퍼링(buffering) : 입출력 장치마다 버퍼를 두어 프로세서 연산 시 동시에 다른 작업을 입출력 하게 하는 방법
-
스풀링(spooling) : 속도가 빠른 디스크를 버퍼로 사용해 입출력을 입출력 장치에서 읽어온다. 버퍼링과 달리 여러 작업의 입출력과 계산을 할 수 있다.
다중 프로그래밍 시스템(multiprogramming system)
여러 프로그램을 메모리에 적재 후, 한 프로그램이 입출력 등을 위해 프로세스 사용을 잠시 멈추면 다른 프로그램이 프로세서를 사용하는 방식.
장단 | 항목 |
---|---|
장점 | 1. 프로세서 가동률이 증가 2. 여러 프로그램이 프로세서를 나눠 쓸 수 있다. |
단점 | 여러 프로그램들의 메모리 적재, 관리, 프로세스 할당 방법(주로 인터럽트로 구현) 등을 구현하기 힘들다. |
시분할 시스템(Time Sharing System)
다수의 사용자나 프로세스가 동시에 프로세서 같은 컴퓨터의 자원을 공유할 수 있는 기술로, 각 프로그램에 일정한 프로세서 사용 시간(time slice) 또는 규정 시간량(quantum)을 할당하여 주어진 시간 동안만 컴퓨터를 사용하는 방식으로 구현된다.
장단 | 항목 |
---|---|
장점 | 1. 프로세스 유휴시간이 감소 2. 소프트웨어의 중복 회피가 가능 3. 다중 프로그래밍 시스템에 비해 응답 시간이 빠르다. |
단점 | 1. 컴퓨터 자원을 다른 프로그램에 넘기면서 보안과 신뢰성 문제를 방지해야함. 2. 데이터의 무결성과 데이터 통신의 문제도 해결해야 한다. |
다중 처리 시스템(multiprocessing)
단일 컴퓨터 시스템 내에서 둘 이상의 프로세서를 사용해 동시에 둘 이상의 프로세스를 처리 가능, 여러 프로세서가 시스템 버스, 클록, 메모리와 주변 장치를 공유한다.
장단 | 항목 |
---|---|
장점 | 1. 프로세서가 문제가 생기면 다른 프로세서가 처리가 가능하므로 신뢰성이 증가한다. 2. 개발자의 구현에 따라, 다중 작업 처리를 통해 빠른 처리가 가능하다. |
단점 | 프로세서 간의 연결, 상호작용, 역할 분담, 자원 공유를 염두에 둬야하므로, 구현이 힘들다. |
실시간 처리 시스템(Real time Processing system)
언제나 온라인 상태를 유지하며, 응답 시간 간격을 극히 줄인 시스템으로, 적시 응답이 필요하거나 데이터 흐름 또는 프로세서 연산에 엄격한 시간 요구가 있을 때 사용한다.
경성 실시간 처리 시스템(hard real time processing system) 은 미사일 자동 조준, 철도 자동 제어 등 시간 제약 조건이 치명적인 시스템을 의미하며,
연성 실시간 처리 시스템(soft real time processing system) 은 영상 재생 시스템 처럼 시간 제약 조건이 치명적이지 않은 시스템을 의미한다.
분산 처리 시스템(Distributed Processing system)
시스템마다 독립적인 운영체제와 메모리를 가진 상태에서 서로 통신하여 작업의 연산을 분산 처리하는 시스템이다.
장단 | 항목 |
---|---|
장점 | 1. 시스템 간의 자원 공유, 연산 속도 향상, 신뢰성을 늘릴 수 있다. 2. 여러 시스템을 중앙 집중식 하나의 시스템처럼 사용할 수 있다. |
단점 | 시스템 구현 및 유지보수가 어려울 수 있다. |
운영체제의 구조
운영 체제의 복잡함을 해결하기 위해 다양한 설계 구조가 생기게 되었다.
단일 구조(Monolithic structure)
가장 초기에 나타난 방법으로, 운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재 후, 시스템 호출로 기능을 사용하는 구조이다.
장단 | 항목 |
---|---|
장점 | 1. 작고 간단한 구조. 2. 직접 통신을 통해 시스템 자원을 효율적으로 관리할 수 있다. |
단점 | 1. 버그의 원인이나 기타 오류 구분이 힘들다. 2. 새 기능 추가시 수정과 유지보수가 어렵다. 3. 같은 메모리에 기능이 밀집되어 있으므로, 문제가 시스템 전체에 영향을 줄 수 있으며, 악성 코드로 피해를 입기 쉽다. |
초기 유닉스는 인터페이스를 커널 인터페이스, 하드웨어 인터페이스 두개로 나누는 구조였다.
계층 구조(Layer structure)
각 계층 별로 비슷한 기능끼리 그룹화하며, 각 계층은 자신의 상위와 하위 계층과 상호작용하는 구조.
장단 | 항목 |
---|---|
장점 | 1. 모듈화가 잘되어 있어, 시스템 검증과 오류 수정이 쉽다. 2. 설계나 구현이 쉽다. |
단점 | 1. 언제나 모든 데이터가 모든 계층을 지나며 시스템 호출이 발생하므로 성능이 떨어진다. 2. 기능이 천차만별이고, 언제나 상위 하위 계층과만 상호작용하므로, 계층의 그룹화를 정의하기 어렵다. 3. 모든 계층이 시스템에 제한 없이 접근 가능하여 오류나 악성 코드에 취약할 수 있다. |
다익스트라가 개발한 THE 운영체제에서 처음 사용한 구조이다.
마이크로 커널 구조(Micro-kernel structure)
커널에 최소한의 기능만 남기고, 기타 기능은 사용자 영역에서 수행하는 방법.
복잡하고 다재다능한 운영체제들에 적합하며, 모듈화 구성요소 개념은 많은 운영체제들이 채택하고 있다.
주로 하드웨어 초기화, 메모리 관리, 프로세스 관리, 프로세스 간 통신 및 협력 기능은 커널이 담당하며, 나머지 기능인 네트워크 시스템, 파일 시스템 상호작용, 장치 관리 등은 커널 외부에서 담당한다.
장단 | 항목 | |
---|---|---|
장점 | 1. 커널의 크기와 복잡도가 대폭 줄어든다. 2. 사용자 영역의 오류가 커널에 영향을 끼치지 않는다. 3. 모듈화 정도가 높아, 이식성, 규모 확장성이 높다. 4. 서버 개발이 용이하고, 운영체제 기능을 쉽게 변경 가능 5. 발생 지연이 적고 예측 가능하다. |
|
단점 | 모듈 간의 통신이 빈번해 성능이 떨어질 수 있다. |
프로세스 간 통신 발생을 최소화하는 것이 최우선 과제이다.
_articles/computer_science/OS/IT_COOK_BOOK_OS_정리/OS 정리-Chap 2-운영체제란.md