컴퓨터 구조는 컴퓨터의 동작원리를 하드웨어 측에서 봤다면,
운영체제는 소프트웨어 측에서 보는 내용이다.
컴퓨터 공학의 목표
-> 추상화 ( 모든 기능을 단순하게 표현하고, 작동하게 한다. )
운영체제는 하나의 CPU에 여러 소프트웨어가 작동하게 한다.
-> 누가, 언제, 얼마나 CPU를 사용할 것인가?
- 프로세스가 작동되려면 메모리에 올라와 있어야 하는데, 프로세스 관리, 메모리 관리, 입출력 파일 관리 등을 하는 것이 운영체제의 역할이다. ( 소수의 자원으로 다수의 작업을 처리하는 방법 )
운영체제
- 컴퓨터 등의 전원을 켜면 가장 먼저 만나며, 컴퓨터의 자원을 독점적으로 관리하는 소프트웨어이다.
- 자원을 추상화하고, 사용하기 위한 인터페이스를 제공한다.
- 효율성, 안정성, 확장성, 편리성을 챙겨야한다.
Q. OS없이 하드웨어가 작동할 수 있을까?
- 작동은 하지만, 제어가 어렵고 기능이 한정되고. 추가적인 장치의 연결이나 소프트웨어의 설치가 불가능하다.
- 그러나, 보안에 좋고, 전용 소프트웨어를 사용하면 성능도 우수하다. 이를 위해 OS없이 나오는 시스템도 존재한다.
컴퓨터의 역사
- 조지 부울의 부울 대수, 앨런 튜링의 튜링머신, 클로드 섀년의 디지털 논리회로, 정보이론, 폰 노이만의 폰노이만 구조
1. 고정 프로그래밍 ( Fixed Program Computer )
- 운영체제에 대한 개념이 없으며, 하나의 기계가 하나의 기능을 수행한다.
- 기능을 바꾸기 위해서는 모든 회로를 직접 조작, 변경해 연결하며, 새로운 기능 구축에 많은 시간이 소요된다.
2. 일괄 작업 시스템 ( Batch-Processing System ) -> 내장 프로그래밍 ( Stored Program Computer )
- CPU와 메모리가 분리되기 시작함.
- 카드를 읽어서 메모리에 적재하고 CPU가 실행한다.
- 작업을 한 번에 처리하므로, 실행 중간에 데이터를 추가 입력, 수정하는 일이 불가능하다.
=> 장치 관리가 필요해짐
3. 대화형 시스템 ( Interactive System )
- 모니터 및 키보드의 등장. ( 기존에 프린터를 사용 )
- 입력값에 따라 작업의 흐름을 바꾸는 것이 가능하며,
- 다중 프로그래밍을 위해 한 CPU로 여러 작업을 동시에 실행하는 기술이 개발되었다. (시분할 시스템)
-> 각 작업당 CPU 사용시간을 분할, CPU 대기시간이 줄어들어 처리율이 증가한다.
-> 후순위 프로그램이 중간에 끊어져서 문제가 발생할 수 있다.
=> 프로세스 관리, 메모리 관리, 파일 시스템 관리, 기타 관리 등이 필요해짐.
시스템의 역사 : 고정 프로그래밍 > 배치 프로세싱 > 대화형 시스템 > 시분할 시스템 > 다중프로그래밍
네트워크 기반 시스템 ( Network based System )
- 네트워크의 등장으로 장치 외부와도 연결 가능하게 됨.
-> 컴퓨터간 정보 전송이 현실적인 수준으로 경제적으로 전환되었다.
- 외부 장치를 고려해 운영체제 기능의 확장이 필요하다.
-> 네트워크 관리(프로토콜, 리소스 제어), 보안 관리, 사용자 관리(시스템 사용자) 등이 필요해짐.
기타 시스템
1. Peer-to-Peer System ( P2P )
- 특정 서버에 집중되는 과부화 ( Single point of failure )를 해결하기 위해, 중앙서버 없이 사용자끼리 직접 연결.
- Synchornization (동기화), Consensus (합의)
2. 가상화 시스템 ( Virtualization )
- OS는 하드웨어를 추상화해주는 존재. 컴퓨터 그 자체도 추상화 가능하다.
- 컴퓨터 위에서 컴퓨터를 소프트웨어로 돌림.
-> Sandbox(독립적인 공간)이 지원된다.
- Performance (성능), Isolation (분리)
3. 기타
- 모바일 운영체제 : Android, iOS 등...
- 임베디드 운영체제 : 특수장치용 OS ( WinCE, Embeded Linux 등... )
- 실시간 운영체제 : 정해진 시간 내에 처리되는것을 보장하는 OS