Linkers and Loaders
큰 프로그램은 여러 사람들이 만든 소스코드들로 이루어져 있다.
Linker는 이런 여러 소스코드들을 하나의 single binary executable file로 만들어 준다.
loader는 linker로 인해 만들어진 executable file을 가져와 실행헤준다. (file를 클릭하여 수행할 때)
하지만 dynamically linked libraries는 필요할 때만 로드되어 사용된다.

system call이 시스템마다 틀리기 때문에 한 운영체제에서 만든 system call은 다른 운영체제에서는 돌아가지 않는다.
--> 이 때 가상의 VM을 만들어서 실행시킬 수 있다.
Application Binary Interface: 오브젝 레벨의 인터페이스. 오퍼레이팅 시스템이나 하드웨어에 따라 차이 없이 실행된다.
OS implementation
OS 제잘할 때의 목적
1. 사용자 목적: 편리하고 쉽고 안정적으로 빨리
2. 시스템 목적: 공정하게, 확장성 있게
OS 제잘할 때의 언어
초기에는 어셈블리어로 많이 제작 했지만 현재는 C, C++과 다른 언어를 조합해서 제작한다.
HIgh-level은 프로그래밍은 쉽지만 속도가 드려진다.
OS 종류
Monolithic Structure – Original UNIX(p39)
- 모듈이라던가 뭐 없이 모두가 한 덩어리로!
- 단일 운영체제 구조
- OS는 하드웨어가 다른 것을 고려하지 않아도 된다.
Linux System Structure(p41)
- 모노리틱(단일 운영체제)+ 모듈러 기능
- 커널이 각 부분별로 모듈로 구성이 되어 있다.--> 기능의 추가, 제거가 쉬움
Layered Approach (p42)
- 레이어 구조를 함으로써 수정을 용이하게 함--> 유연성 증가
Microkernels(p43)
- 최소한의 핵심적인 부분은 커널에 남겨 놓고 다른 부분은 user space처럼 작동
- 확장이 쉽고 유연성이 매우 높음
- 어느 한쪽에 문제가 생겨도 다른 쪽은 영향을 받지 않음 --> 신뢰성 안정성 증가
- 단점은 속도가 떨어진다는 것.

Modules
- 모노리틱 커널 구조의 작은 유연성을 극복하기 위해
- 유연성 확보
- 기능을 쉽게 뗏다 붙였다 함
Hybrid Systems[최근 추세]
- 리눅스나 놀라리스(모노리틱 구조)는 모듈을 통해 유연성 증가
- 다윈OS는 마이크로커널을 사용하지만 선택적으로 모노리틱 구조를 사용
Building and Booting an Operating System
운영체제가 처음에 어떻게 생성이 되고 부팅이 되는지.(compile and loading)
1. 소스파일코드로 운영체제 개발
2. 운영체제의 메모리가 얼마고, CPu는 얼마쓰는지 구성
3. 컴파일
4. 로딩&부팅
System Boot
휘발성 메모리인 ram이 아닌 비휘발성 메모리rom에 저장해야 함.
bootstrap loader가 실행
하지만 최근에는 운영체제가 사이즈가 크기 때문에 rom이 아닌 two-step을 씀
1. bootstrap이 부트블락(hard disk에 저장)을 올림
2. 부트블락이 운영체제를 올림(부트블락이 다양한 운영체제 중 선택을 할 수 있음)
Operating System Debugging
- os의 다양한 성능 튜닝
- core dump, crash dump(에러가 났을 때 상태 그대로 저장)
- tracing
BCC (BPF Compiler Collection) is a rich toolkit providing tracing features for Linux
'학교생활 > 운영체제' 카테고리의 다른 글
[운영체제] Ch3(2)InterProcess Communication(IPC) (0) | 2022.10.12 |
---|---|
[운영체제] Ch3(1)Process개념과 작동 (0) | 2022.10.12 |
[운영체제] Ch2(1) OS Services & System call (0) | 2022.10.12 |
[운영체제] Ch1(5) (0) | 2022.10.12 |
[운영체제] Ch1(4) chaching& Copy replication (0) | 2022.10.12 |