일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- Operating System
- React
- 개발
- CS지식
- db
- OS
- 운영체제
- 앱 개발
- 메모리
- Database
- 안드로이드
- 액티비티
- github
- Android
- 코틀린
- 앱
- reactnative
- 안드로이드 디자인 패턴
- 디자인 패턴
- 리액트네이티브
- MVVM
- 안드로이드 개발
- 프로세스
- 리액트
- 디자인패턴
- 스레드
- cs
- 앱개발
- Kotlin
- Today
- Total
Tech Log
[Operating System] 운영체제 개요 본문
운영체제
사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스.
한정된 메모리나 시스템 자원을 효율적으로 분배하는 역할.
예) PC 운영체제(Mac OS, Windows, 유닉스, 리눅스 등), 모바일 운영체제(iOS, 안드로이드 등)
*운영체제와 유사하나 소프트웨어를 추가로 설치할 수 없는 것이 펌웨어(Firmware). 펌웨어는 특정 하드웨어에 포함된 소프트웨어를 말한다.
운영체제의 역할
- CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환 관리
- 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당할지를 관리
- 디스크 파일 관리 : 디스크 파일의 보관 방법을 관리
- I/O 디바이스 관리 : I/O 디바이스들(마우스, 키보드 등)과 컴퓨터 간에 데이터를 주고 받는 것을 관리
- 자원 보호 : 비정상적인 작업으로부터 컴퓨터 자원을 보호, 사용자가 직접 자원에 접근하는 것을 막음으로써 컴퓨터 자원을 보호.
운영체제의 구조
- 인터페이스(GUI) : 사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 형태, 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호작용할 수 있도록 함
- 시스템 호출(시스템콜) : 운영체제가 커널에 접근하기 위한 인터페이스, 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용, 커널이 자신을 보호하기 위해 만든 인터페이스, 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단.
- 커널 : 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
- 드라이버 : 하드웨어를 제어하기 위한 소프트웨어, 커널과 하드웨어의 인터페이스를 담당하며 디바이스 드라이버라고도 불림, 마우스와 같이 간단한 제품은 드라이버를 커널이 갖고 있으나 그래픽 카드와 같이 복잡한 하드웨어의 경우 제작자가 드라이버를 제공.
*CUI : 그래픽이 아닌 명령어로 처리하는 인터페이스
시스템 호출(시스템콜) 과정
유저 프로그램이 I/O 요청으로 트랩(trap)을 발동하면, 올바른 I/O 요청인지 확인한 후 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행된다.
*트랩(trap) : 트랩은 Interrupt의 한 종류로서 명령의 수행 결과로 발생, 주로 시스템콜을 호출할 때나 Segmentation fault(할당되지 않은 메모리 참조)로 인해 발생
*인터럽트(Interrupt) : 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것, 키보드, 마우스 등 IO 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스 오류 등으로 발생
- I/O 요청인 fs.readFile()이라는 파일 시스템의 파일을 읽는 함수가 발동
- 유저 모드에서 파일을 읽지 않음
- 유저 모드에서 커널 모드로 들어가 파일을 읽음
- 다시 유저 모드로 돌아옴
- 유저 프로그램의 로직 수행
위 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호할 수 있다.
*I/O 요청 : 입출력 함수, 데이터베이스, 네트워크, 파일 접근에 관한 일
프로세스와 스레드에서 운영체제로 어떤 요청을 할 때는, 시스템콜이라는 인터페이스와 커널을 거쳐 운영체제에 요청이 전달된다.
시스템콜은 추상화 계층이므로 네트워크 통신이나 데이터베이스와 같은 낮은 단계의 영역 처리에 대한 부분을 많이 신경쓰지 않고 프로그램을 구현할 수 있다.
*추상화 계층 : 특정한 집합 기능의 자세한 부분을 숨기는 기법
modebit
1 또는 0의 값을 가지는 플래그 변수, 시스템콜이 작동될 때 modebit를 참고하여 유저 모드와 커널 모드를 구분한다.
카메라와 키보드 등 I/O 디바이스는 운영체제를 통해서만 작동해야 한다.
만약 유저 모드 기반으로 카메라가 켜진다면 사용자가 의도하지 않았는데 공격자가 카메라를 갑자기 켤 수 있다.
이러한 위험은 운영체제를 통해 작동해야 막기가 쉽다.
다음 그림과 같은 과정을 통해 I/O 디바이스가 작동한다.
이를 위한 장치가 modebit이다.
modebit의 0은 커널 모드, 1은 유저 모드이다.
*유저 모드 : 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드
*커널 모드 : 모든 컴퓨터 자원에 접근할 수 있는 모드
참조
- 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)
- 조성호, 쉽게 배우는 운영체제, 한빛아카데미(2018)
- Joogle
'Computer Science > Operating System' 카테고리의 다른 글
[Operating System] 메모리 할당 (1) | 2023.01.28 |
---|---|
[Operating System] 가상 메모리 (2) | 2023.01.28 |
[Operating System] 캐시 (0) | 2023.01.28 |
[Operating System] 메모리 계층 (2) | 2023.01.28 |
[Operating System] 컴퓨터의 요소 (0) | 2023.01.27 |