Monolithic Kernel, Microkernel
사용 예시 : 상용화된거는 대부분 monolithic kernel.
Microkernel은 성능이 좋진 않아서 windows에서만 일부 사용
1. monolithic kernel
-> OS 안에 들어 있는 s1 s2 s3
- 바뀐 os 바이너리는 어디에 저장? → 보조기억장치에 저장 (파일 형태) → 메인메모리로 들어오는과정 = 부팅
S1,s2각자가 하드웨어 의존적인 부분이 있을 수 있으므로 여러군데 고쳐야함 - 다 뜯어서 고칠 수 밖에 없음
2. micro kernel
-> S1,S2,S3가 운영체제 밖으로 나와있음.
컴퓨터를 끌 필요가 없음 - 부팅 안해도 바꿀 수 있는 s1 s2.. 각자가 자체적으로 수정 가능
- 굉장히 편리하게 수정하기 좋다 → 연구를 많이 했는데… 근데…?
- 결국 s1이 유저 프로세스이므로 s1말고 비슷한 거로 대체가 가능하다. Portability(다른 하드웨어를 가진 컴퓨터에 이식하는것)이 굉장히 좋다.
- 하드웨어 제어는 모두 연노랑 부분 (os)에 남겨 놓음
→ 근데 단점이 커서 안씀 왜?? 밑에서 다룰게
더보기
<장점>
- 내부
- 확장성
- 유연성
- User process
- 운영체제 입장에서 자기 위에 돌아가고 있는 건 모두 급이 떨어져 보임 - user process처럼 보임
<단점>
- Performance - monolithic kernel 보다 느림
- interprocess communication이 필요
- 서버용 컴퓨터 (ex 슈퍼컴퓨터, 고성능 컴퓨터)에서 굉장히 느려짐
Operating System의 예시
- UNIX
- LINUX
- WINDOWS
- mobile device
- Rex, symbian, linux, linux + android, ios …
- Real-time OS : 냉장고 속 컴퓨터 (내장형 시스템 - 일반 PC와 기능이 다름)
- 무조건 빠르다고 실시간 운영체제인 것이 아니다.
- 벌어진 일에 대해 빠르게 처리하는 것이 실시간 컴퓨터이고 그것에 사용되는게 실시간 운영체제
- 임베디드 시스템에 사용
1. UNIX 운영체제
💡 C언어 최초 사용, monolithic kernel
Multics → UNIX → Minix → Linux
더보기
- Unix의 historyGE라는 가전 회사, bell Lab , AT&TMultics 개발한 팀 다시 모임→ high level 언어로 쓰자…… - c언어 개발 → unix 개발 → c언어는 컴파일만 하면 됨
- Assembly 언어로 개발했었음 - 코드가 달라지게 되면 똑같이 전부 다 다시 짜야됨
- AT&T가 ge가 협동해서 multics를 개발 -근데 상업적으로 성공 못함 → os 덩치가 커서 느려서 두 회사 헤어짐
- Unix이전과 이후로 나뉜다. Unix 이전에도 os는 많았는데 multics는 나이스한 os 개념을 보임. → os와 프로그램 실행 원칙이 multics에서 나타남
- C언어로 작성
- IBM 하드웨어가 변할 때마다 운영체제가 바뀌는건 힘든일이고 시간이 오래걸린다. → UNIX를 만든 후 (high language)C언어 소프트웨어를 다른 하드웨어 위해 포팅 가능. → 운영체제를 그대로 사용하면서 하드웨어를 사용 가능하며 혁신을 이룸 → shell
- AT&T가 unix를 판매 어려워지면서 학교에 배포, 연구
- BSD (버클리 소프트웨어 distribution) 개발 - 이거 지금은 안씀
- System 3, system4… 로 발매
2. LINUX 운영체제
💡 monolithic kernel 형식으로 제작
- unix를 pc에서도 사용하고자 개발
- Linux가 1991년 처음 인터넷에 게시됨
- highly modular , easily configured
User level(os 외부), kernel level(os 내부),
- 목적 : 빠른 실행시간 → micro kernel 사용안함
2. Windows 운영체제
💡 micro kernel , user-mode processes
- user-mode processes