일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- iterator
- t1
- 715. Range Module
- Convert Sorted List to Binary Search Tree
- 43. Multiply Strings
- Decorator
- 파이썬
- DWG
- Python Code
- 밴픽
- Python
- Class
- concurrency
- 프로그래머스
- data science
- 컴퓨터의 구조
- LeetCode
- Python Implementation
- attribute
- 109. Convert Sorted List to Binary Search Tree
- Protocol
- 30. Substring with Concatenation of All Words
- Generator
- Regular Expression
- kaggle
- shiba
- 315. Count of Smaller Numbers After Self
- 운영체제
- 시바견
- Substring with Concatenation of All Words
- Today
- Total
Scribbling
운영체제 - 1 본문
1. 운영체제
1.1. 운영체제
운영체제 (Operating System)란? 윈도우, Mac Os, 유닉스 (Unix), 리눅스 (Linux) 등이 운영체제에 해당된다. 스마트폰에도 운영체제가 있는데, 애플의 iOS와 구글의 안드로이드가 대표적이다. CPU 성능이 낮고 메모리 크기가 작은 시스템에 내장하도록 만든 운영체제는 임베디드 시스템 (Embedded System)이라고 한다.
1.2. 운영체제의 필요성
- 운영체제가 없는 기계는 만들 당시 구현한 기능 외에 다른 기능을 추가하거나 성능을 향상 할 수 없다. 반면 운영체제가 있는 기계는 새로운 기능의 추가나 성능 변경이 가능하다.
- 운영체제는 자원 관리 (Resource Management)라는 중요한 역할을 수행한다. 컴퓨터에 부착된 모든 장치를 컴퓨터 자원 (Computer Resource)라고 하는데, 운영체제는 사용자가 이러한 자원에 직접 접근하는 것을 막음으로써 자원을 보호하고 관리한다. 그 대신, 운영체제는 자원을 이용할 수 있는 여러 가지 방법을 제공한다. 이와 같이 사용자가 컴퓨터를 사용할 수 있도록 돕고 그 결과를 알려주는 것을 인터페이스 (Interface)라고 한다. 운영체제는 인터페이스를 제공함으로써 자원을 보호함과 동시에 편의를 도모한다.
1.3. 운영체제의 역할
- 자원 관리
- 자원 보호
- 하드웨어 인터페이스 제공: 운영체제는 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다. 하드웨어 인터페이스 지원은 드라이버를 컴퓨터에 설치해야 가능하다. 일부 드라이버는 운영체제를 설치할 때 자동으로 설치되지만, 일부 하드웨어의 경우 따로 추가적인 설치가 필요하다. (마우스 vs 프린터)
- 사용자 인터페이스 제공
2. 운영체제의 역사
2.1. 다중 작업 시스템
다중 작업 시스템 혹은 시분할 시스템에서는 CPU 사용 시간을 잘게 쪼개어 작업들에 나누어줌으로써 모든 작업이 동시에 처리되는 것처럼 보인다. 이러한 시스템의 단점은 여러 작업을 동시에 처리하기 위한 추가 작업이 필요하다는 것이다. 또한 시스템 내에 많은 작업이 공존할 경우, 중요한 작업이 일정 시간 안에 끝나는 것을 보장하지 못한다. 특정한 경우에는 시분할 시스템을 사용하지 않고 시스템에서 일정 시간 안에 작업이 처리되도록 보장하는 실시간 시스템 (real-time system)을 사용하기도 한다.
2.2. P2P 시스템
서버-클라이언트 모델의 단점인 서버 부하를 줄일 수 있는 새로운 시스템으로 P2P 시스템 (Peer-to-Peer System)이 만들어졌다. 이는 서버를 거치지 않고 사용자와 사용자를 직접 연결한다는 의미로, P2P 시스템에서는 서버가 파일 검색만 맡고 사용자 간에 파일 전송이 이루어진다.
메신저 시스템은 대표적인 P2P 기술의 활용 사례이다. 많은 사람들이 채팅을 하고 파일을 주고 받는 메신저 시스템은 클라이언트/서버 구조로 만들 수 없다. 메신저에 로그인 하면 먼저 서버에 접속하여 사용자 인증 (Certification)과 축석 (Presence) 등의 정보를 받는다. 이러한 절차가 완료되면 서버를 거치지 않고 사용자 간에 직접 채팅을 하거나 데이터 전달이 가능하다.
대용량 파일 공유 시스템도 P2P 시스템의 예시이다. 이 시스템 내에서 다운로더는 같은 파일을 가진 여러 사람으로부터 데이터를 나누어 받는다.
3. 운영체제의 구조
3.1. 커널과 인터페이스
커널 (kernel)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다. 운영체제의 인터페이스는 커널에 사용자의 명령을 전달하고 그 결과를 사용자에게 알려주는 역할을 한다.
같은 커널을 사용하더라도 다른 인터페이스를 가지면 사용자에게는 다른 운영체제로 보인다. 유닉스의 사용자 인터페이스는 셸 (shell)이라고 하며, C셸, 배시셸 등 여러 종류가 있다. 셸은 명령어 기반이라 일반인이 사용하기 어려워서 유닉스 운영체제를 어렵게 느끼는 사람이 많다. 반면 매킨토시의 운영체제 Mac OS X 또한 유닉스 계열의 커널 기반이다.
3.2. 시스템 호출과 디바이스 드라이버
시스템 호출: 시스템 호출 (System Call)은 커널을 보호하기 위해 만든 인터페이스이다. 커널은 사용자 혹은 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다. 사용자 프로그램이 자원을 이용하려면, 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다.
시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공된다. 예컨대 C 언어의 printf()함수 또한 시스템 호출 중 하나이다.
<API; Application Programming Interface> API는 응용 프로그램이 자신과 관련된 프로그램을 만들 수 있도록 제공하는 인터페이스이다. 예컨대 포토샵에서 사용자가 직접 필터를 디자인하는 툴이 API의 한 예시이다. 이러한 측면에서, 운영체제의 API를 시스템 호출이라고 정의할 수 있다.
<SDK; Softwarte Developer's Kit> SDK는 프로그램 개발자를 위한 API 및 API 매뉴얼, 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴을 일컫는다.
커널과 하드웨어의 인터페이스는 드라이버 (driver)가 담당한다. 커널은 입출력의 기본적인 부분만 제작하고, 드라이버는 커널이 실행될 때 함께 실행된다. 마우스, 키보드 같이 기본적인 디바이스 드라이버는 커널에 포함되어 있어서 컴퓨터에 꽂기만 하면 작동되지만 (Plug and Play), 프린터, 그래픽카드 등 복잡한 디바이스는 사용자가 드라이버를 직접 설치해야 한다. 즉, 하드웨어는 커널과 직접 연결되기도 하고 드라이버를 통해 연결되기도 한다.
3.3. 커널의 구성
* 커널이 하는 일
- 프로세스 관리: 프로세스에 CPU를 배분하고, 작업에 필요한 환경 제공.
- 메모리 관리: 프로세스에 작업 공간을 배치하고, 메모리 제공.
- 파일 시스템 관리
- 입출력 관리
- 프로세스 간 통신 관리
* 계층형 커널 구조: 단일형 커널 구조에서 발전된 형태로, 유사한 기능을 모아 모듈화하여 디버깅이 쉽다. 현대 운영체제는 대부분 이 구조로 이루어져 있다.
가상머신은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 가상머신을 통해 응용 프로그램이 운영체제와 관계 없이 모두 동일한 환경에서 작동하는 것처럼 보인다.
4. 잡상식
4.1. X86 과 X64
초기의 펜티엄 CPU까지는 32bit 기반으로 X86이라고 했고, 이후 개발된 64bit 기반 CPU는 X64라고 했다. 그래서 응용 프로그램 중 32bit 기반 프로그램은 X86, 64bit 기반 프로그램은 X64라고 표시한다.
4.2. 스티브 잡스
잡스는 마하 커널을 기반으로 하는 Mac OS를 만들고 이를 사용한 컴퓨터를 내놓았는데, 이를 통해 마우스를 이용하는 GUI를 처음 도입하였다. 이전까지의 컴퓨터는 키보드로 입력하여 명령하는 텍스트 기반이었다.
MP3 플레이어의 종주국은 한국이었다. 잡스는 좋은 사용자 인터페이스와 아이튠즈라는 편한 음악 유통 구조를 기반으로 아이팟을 출시하였고, 순식간에 MP3 플레이어 시장을 장악하였다.
노키아, 모토롤라, 삼성 등이 전세계 휴대전화 시장을 장악하고 있었으나, 이 역시 잡스의 아이폰이 뒤집었다. 아이폰은 세계 최초의 멀티터치스크린을 장착하였고, 이 혁신적인 인터페이스는 아이폰의 대 성공으로 이어졌다.
4.3. 안드로이드
리눅스 커널을 기반으로 구글에서 제작한 안드로이드는 스마트폰과 같은 모바일 플랫폼의 운영체제이다. 안드로이드는 리눅스 커널과 자바를 사용한 덕에 호환성이 매우 뛰어나다. 안드로이드는 GNU의 리눅스 커널을 사용하여 제작되었기 때문에 GPL을 따른다. 구글은 안드로이드를 돈 주고 팔지 않지만, 안드로이드용 앱 마켓인 구글 플레이의 유료 앱 수익 중 일부가 구글에 돌아간다.
'Computer Science > Computer Knowledge' 카테고리의 다른 글
운영체제 - 3 (0) | 2021.10.03 |
---|---|
운영체제 - 2 (0) | 2021.09.27 |
컴퓨터의 구조 - 9 (0) | 2021.09.10 |
컴퓨터의 구조 - 8 (0) | 2021.09.07 |
컴퓨터의 구조 - 7 (0) | 2021.09.06 |