오식랜드
[운영체제] 운영체제와 커널, 가상머신의 개념 본문
반응형
운영체제와 커널, 가상머신의 개념
운영체제
- 하드웨어와 소프트웨어의 사이
- 정확히는 ‘시스템 소프트웨어’ 중 하드웨어와 가장 가까움
- 컴퓨터 자원을 사용할 수 있는 인터페이스 제공
- 모든 컴퓨터 자원을 숨기고 ‘정해진 방법으로만’ 자원을 사용할 수 있게 제한
임베디드 운영체제
: 컴퓨터가 아닌 다른 목적을 가진 기계가 컴퓨터처럼 동작할 수 있게 만든 것
- cpu 성능이 낮다
- 메모리 용량이 적다
- PC보다 크기가 작다 (커지면 그게 PC임)
- 기능 향상이 가능하다
운영체제의 역할
: 하드웨어의 자원을 효율적으로 처리하는게 목표
- 자원 관리 (효율성)
- 컴퓨터 시스템 자원을 적당한 순서로 배분 및 회수
- 여러 프로그램이 동시에 잘 돌아가게 해야 함
- 같은 자원으로 더 많은 작업량
- 같은 작업량으로 더 적은 자원
- 자원 보호 (안정성)
- 비정상적인 작업으로부터 자원 보호 (에러 시 기존 데이터가 사라지지 않게 보호)
- 문제 발생 시 이전으로 복귀 (fault-tolerance)
- 하드웨어 인터페이스 제공 (확장성)
- 사용자가 복잡하지 않게 사용할 수 있는 ‘일관된 방법’ 제공
- 다양한 자원을 추가하고 제거하기 쉽게 해야함
- 사용자 인터페이스 제공 (편리성)
- 운영체제를 편리하게 사용하도록 지원
- 사용자에게 편리함 제공
- ex) 과거에는 커멘드 창으로 작업하던걸 지금은 GUI로 작업
커널
: 운영체제의 핵심 기능만 모아둔 것
- API
- 응용 프로그램이 커널에 접근할 수 있도록 커널이 제공하는 인터페이스
- 시스템 호출
- 응용프로그램이 하드웨어 자원에 접근하거나, 운영체제의 서비스를 이용할 때 필요
- 운영체제에서는 커널이 제공하는 서비스를 시스템 호출로 제한
- 다른 방법으로는 자원에 접근하지 못하게 보호
- 드라이버
- 커널에 속한다
- 디바이스 연결에 사용
- 요즘은 표준화되어 운영체제에서 자체 설치 가능 (ex. USB 꼽으면 바로 실행되는 것)
- 표준화 : 인터페이스가 통일되어있다는 뜻
커널이 하는 일
*커널의 목표 : 자원관리 (운영체제의 목표도 동일)
- CPU 관리
- 프로세스에 CPU 배분
- 프로세스 : 메모리에 있던 프로그램이 CPU에 적재된 상태
- 메모리 관리
- 파일 시스템 관리 (탐색기)
- 입출력 관리 (장치 관리)
- 프로세스 간 통신 관리
- 공동 작업을 위한 통신 환경 제공
커널의 구성
- 단일형 (Monolitic) 구조
- 여러 모듈들이 하나로 묶여있음
- 상호 의존도가 높아서 작은 결함이 전체에 번짐
- 요즘에는 모듈이 많아져 구현이 어려움
- 다양한 환경과 호환이 어려움 (하드웨어가 다른 곳과 호환이 안됨)
- 장점 → 모듈 간 통신이 적어 효율적인 운영 가능
- 계층형 (Layered) 구조
- 비슷한 기능을 하는 모듈들이 하나의 계층으로 묶여있음
- 시스템 설계나 구현이 단순해져서 유지보수도 간단함
- 계층의 정의가 쉽지 않음 (표준화가 되어있지 않음 → 시스템마다 구조가 다름)
- 단점 → 하나의 기능이 실행될 때 거쳐야하는 계층이 많아 통신 횟수가 많음 → 성능 저하
- 마이크로 구조 커널
- 커널에서는 기본적인 기능만 포함하고 기타 기능은 사용자 영역에서 수행
- 기본적인 기능 : 프로세스 관리, 메모리 관리, 프로세스 간 통신
- 모듈화 정도가 높음 = 모듈이 세분화 되어있음
- 커널 내부 지연이 적고, 예측이 가능함 (→ 실시간 시스템에 활용)
- 단점 → 모듈간 통신이 빈번하여 성능 저하
가상머신
- 운영체제와 응용 프로그램 사이에서 작동하는 프로그램
- 가상머신이 있으면 응용프로그램이 모든 환경에서 동일하게 작동함
- 자바 가상머신(JVM) : 자바 프로그램이 돌아갈 환경. 종속적임
- 서버 가상화 : 하나의 서버에 가상 서버를 여러개 구성
반응형
'dev-log > cs' 카테고리의 다른 글
[운영체제] 버스 (bus) (0) | 2023.09.27 |
---|---|
[운영체제] 현재의 운영체제들 (0) | 2023.09.27 |
[운영체제] 운영체제의 역사 (0) | 2023.09.27 |
gitignore not working (0) | 2021.05.21 |
git pull error (0) | 2021.05.10 |
Comments