Major Achievements
OS가 하는 주요 기본 기능들. 방법은 조금 다르지만 다 이런 기능들을 갖고 있음
1. Processes
- 실행 중인 프로그램을 관리하기 위해서 OS가 사용하는 자료구조
- OS는 프로그램을 프로세스 안에 집어넣고 관리함. (시스템마다 프로세스에 어떤 정보를 집어넣는지 .. 등에 대해서는 시스템마다 다름. BUT! 프로세스를 사용해서 관리한다는 것은 다 동일함)
2. Memory Management
- 프로그램이 처음에 실행파일 형태로 하드디스크에 있음. → 실행을 시작하면 프로세스 형태가 되어서 메인 메모리로 올라옴
- 메인 메모리가 항상 공간이 넉넉하지 않음. 일부만 올려넣기에도 공간이 넉넉하지 않을 때가 있음. → 프로세스가 하드디스크로 완전히 쫓겨나가는 상황도 있음.
- 실행 파일이 프로세스가 되어서 메모리에 올라왔다가 다시 프로세스 형태로 하드디스크로 내려왔다가(파일 형태가 아님) 다시 메모리로 왔다갔다 하며 작업함. ⇒ 이것을 Virtual Memory System이라고 부름.
- 실제 메모리는 진짜 메모리고, 하드 디스크 안에 있는 프로세스들도 사실 다 메모리 안에 있는 것이기 때문에, 전부 합쳐서 가상의 메모리 공간에 모두 프로세스가 들어있다고 함
3. information protection and security
information protection
- 혼자 사용하는 시스템이 아니라 여러 사람과 같이 사용하는 시스템이라고 한다면, 각각의 user마다 자기가 사용할 수 있는 정보들이 정해져있음.
- 정보에 대한 권한들이 정해져있음.
- 권한을 설정하고 다른 사람이 정보들을 사용하지 못하게 하는 것.
- A가 B의 데이터를 사용하지 못하게 함
security
- 등록되지 않은 user가 시스템에 들어와서 다른 사람의 데이터를 막 사용하는 상황을 막기 위해서
4. scheduling and resource management
scheduling
- CPU가 시스템 안에 하나가 있고 실행시키려는 프로그램은 수십, 수백개임.
- 아무리 CPU가 많아도 CPU의 숫자보다는 실행하려고 하는 프로세스의 숫자가 훨씬 많음
- OS가 이 프로세스들을 효율적으로 실행을 시키려면 어떻게 실행시켜야 하는지 결정해야 함
- 프로세스의 종류와 프로세스가 시스템 안에서 하는 행동들 등에 따라서 우선순위가 달라짐.
- CPU를 차지하는 것도 우선순위에 따라서, timeout에 대한 시간 간격도 우선순위에 따라 달라짐.
resource management
- 시스템 안에는 CPU, 메인 메모리, I/O Device 같은 하드웨어적인 자원들 이외에 다른 자원들이 굉장히 많음
- 이들을 어떻게 관리할 것인가
Modern Operating Systems
어떤 OS는 가지고 있고 어떤 OS는 가지고 있지 않음.
Microkernel architecture
- 커널 : OS 프로그램 중에서 굉장히 중요하고 자주 사용되는 function ⇒ 항상 메모리에 있어야 함
- 이러한 커널을 정말 최소한으로 만듦. 정말 꼭 필요한 항상 메모리에 있어야 되는 그런 정보들만 아주 작은 마이크로커널로 만듦
- 마이크로커널을 제외한 나머지 부분들은 OS 프로세스(프로그램을 실행시키기 위해서 사용하는 자료구조)로 만들어서 실행을 시킴. 즉, 나머지 OS 서비스들은 별개의 프로그램으로 실행을 시킬 것임.
- 가장 대표적인 시스템이 Windows 시스템임.
Windows Architecture
아래에서 두 번째 줄에 kernel이 있음. 이것이 바로 Microkernel
그 위에 파란색 박스들이 있음. 이것이 바로 OS Service들
하나의 OS 서비스를 하나의 박스로 표현한 것임.
여러 가지 OS 서비스들을 별개의 프로그램(프로세스)으로 만들어서 실행을 시킴
Object Oriented Design을 따라서 설계가 됨
- 파란색 하나 하나는 별개의 object이고, object와 object 사이에는 직접적인 통신을 하지 않음. → 만약 object 사이에 통신이 필요하면 커널을 거쳐서 함.
- 만약 어떤 모듈 하나를 수정한다고 하면, 그 모듈과, 그 모듈이 커널과 만나는 부분만 수정하면 됨. ⇒ 확장성이 좋음
- 이렇게 시스템을 만들게되면 확장성이 좋아서 새로운 디바이스가 나와서 새로운 모듈을 추가할 때에 또는 기존에 있는 모듈을 삭제할 때, 또는 모듈의 내용을 일부 수정해야 될 때, 굉장히 간편하게 할 수 있음.
- OS는 끊임없이 업그레이드가 됨.
Unix Architecture
유닉스는 파란색 부분이 커널임. 한 덩어리로 되어있는 굉장히 큰 kernel
이 안에 굉장히 많은 function들이 있고, 이 function들이 서로 호출하고 return하면서 작업을 함.
각각의 function에서 사용하는 자료 구조들이 전부 포인터로 연결되어있음. → 무언가를 하나 고치려면 그 모듈과 관련된 function들을 쭉 따라가서 어디를 고쳐야 하는지 다 파악해야됨. ⇒ 이것이 쉽지가 않음.
속도가 빠름
유닉스나 리눅스는 확장성이 좋지 않음. 수정하려고 하면 엄청나게 복잡함.
Multithreading
- 프로그램 안에 여러 개의 function이 있음. 순차적으로 함수를 실행하는 것이 아니라, 동시에 실행하여 실행 시간을 줄이는 것. ⇒ 프로그램의 실행 시간이 빨라진다
- 내 프로그램의 일부를 스레드로 만들어서, 동시에 실행을 시키는 방식 : 멀티 스레딩 ⇒ 빠르게 프로그램을 실행시킬 수 있다.
- CPU가 하나인 시스템에서 멀티 스레딩을 이용하면 I/O 작업을 하는 동안 내 프로그램의 다른 스레드를 작업 시키면서 속도를 높일 수 있음. BUT 그것보단 여러 개의 프로세서가 있는 시스템에서의 멀티 스레딩이 더 효과적임
Symmetric multiprocessing (SMP)
- 여러 개의 프로세서를 가지고 있는 시스템.
- 시스템의 CPU가 수십 개, 수백 개가 됨… ⇒ 여러 프로그램들을 동시에 실행시킬 수 있고, 한 프로그램에 여러 스레드들을 동시에 실행시킬 수 있음.
- BUT 메모리는 하나임. → 동시에 시스템 안에 있는 자원들을 access 하는 작업을 OS가 하게 되면, 시스템은 잘 못된 실행 결과를 내게 됨. ⇒ OS에서 가장 중요한 것은 동기화임
- CPU가 많아질수록 OS 코드는 복잡해질 것임.
Distributed operating systems
별도의 CPU, memory, I/O device를 갖고, 별도의 OS를 가지고 있는 PC를 네트워크 연결 → 기존 OS위에 distributed OS를 깔아서 하나의 시스템처럼 사용.
Object-oriented design
Modern UNIX Architecture
Microkernel 사용 ⭕
Linux Kernel Components
Microkernel 사용 ❌, 전부가 OS
속도가 매우 빠름
별도의 프로세스로 나누어 사용을 하지 않음
Android System Architecture
Microkernel 사용 ⭕
'전공 > OS' 카테고리의 다른 글
CH03. Process Description and Control (2) (0) | 2024.04.23 |
---|---|
CH03. Process Description and Control (1) (0) | 2024.04.23 |
CH02. Operating System Overview (1) (1) | 2024.04.23 |
CH01. Computer System Overview (3) (0) | 2024.04.23 |
CH01. Computer System Overview (2) (0) | 2024.04.22 |
댓글