2 분 소요


1. Common System Components로는..
1) Process Management
- 프로세스는 실행쪽에 있는 프로그램이다!
- 프로세스의 삶과 죽음(ㅋㅋ)은 os가 결정한다.
2) Main Memory Management
- 메모리의 공터찾기 놀이!
3) File Management
- 기본 인터페이스로는(create,open,read,write,close)
- 파일은 creator에 의해 정의된 관련 정보들의 집합이다.
4) I/O System Management
- 캐시 시스템/디바이스 드라이버 인터페이스
5) Secondary Management
- 하드디스크 등..
6) Networking (socket)(distributed system)
- 프로세서들 여러개. shared memory나 clk을 공유하지는 않음
- 프로토콜 이용(통신 규약/규칙)
7) Protection System
- 듀얼모드
8) Command-Interpreter System (shell)
- shell/control statement

2. OS Services
- Program Execution
- I/O operations
- File-system manipulation
- Communication
- Error detection

3. System Call
- 실행중인 프로그램과 OS간의 인터페이스를 제공
- 둘 사이간 parameter 주고받아야한다.. how?
- 레지스터로들에 담아서 넘겨주거나
- 메모리의 table에 저장하고 테이블 주소를 레지스터에 넣어 넘기거나
- 프로그램이 stack에 push하고 os가 pop하거나
- 유저프로그램에서 system call이 발생하면, tableX에 들어있는 파라미터들을 넘겨줘야 한다...
   레지스터에 X의 주소를 넣어두면 OS는 레지스터에서 주소를 보고 tableX를 찾아내서 값을 이용하여 인터럽트 루틴을 처리한다
- Types: Process Control/File management/Device management/Information maintenance/Communications

4. Communication Models(두 프로세스간 통신)
1) Message Passing
- 원칙상 memory protection 때문에 두 프로세스는 서로 직접 통신을 못한다... 하지만 커널은 system call을 통해서 user program과 통신할 수 있다. 따라서 kernel에 buffer를 두고 process A가 buffer에 값을 갖다놓고 process B가 찾아가는 형식으로 통신한다. 엇 생산자-소비자 문제네.
2) Shared Memory
- 커널이 관리하는 Shared memory 라는 부분이 main memory 상에 있어서 이 공간을 1)의 kernel의 buffer처럼 사용한다. process A와 process B모두 읽고 쓸 권한이 있지요.
3) Pipe
- file이다.
- 일반적인 경우 file pointer는 하나인데 pipe는 read/write포인터 두개라 읽고 쓰기 모두 가능

5. OS(kernel)를 만드는 방법 
1) Co-Routine : 20만 라인을 그냥 쭈욱.....짠다............ 성능은 best.
2) Layered: 만들기 편하고 유지 보수에 좋다. 자기 위아래의 계층하고만 통신 가능. 이 때문에 overhead있으므로 비교적 느림

6. Microkernel System
- 운영체제를 작고 잘 정의된 모듈로 쪼개고, 이들 중 하나만 microkernel 모드에서 실행한다.
- 나머지는 힘없는 보통 사용자 process이다.
- 커널이 작아지면 버그도 작아지겠지요. 빨리 돌겠지요.
- reincarnation 서버: 다른 서버와 드라이버들이 제 기능하는지 체크하고 자동으로 고침

7. 가상머신(Virtual Machine)
- 레이어 개념쓴다
- 실제 하드웨어가 존재하고 있는것처럼 추상화를 시켜서 hw와 os를 착각하게함
- underlying bare hardware에게 identical한 interface를 제공한다
- Physical computer의 자원은 공유된다
- 가상머신을 만들면 느려지긴 하지만, clone이용하여 서버 폭주 기능 능동적 활용 가능(구글)
- 장점: isolation-> complete protection/os, system 개발/
- 단점: no resource sharing/exact duplicate은 만들기 힘들다.
- VDI(virtual desktop infrastructure): 실제로 설치되어 있는것은 안기, os의 자원을 가상화시킴.

8. Mechanism and Policies
- 메카니즘은: how to do
- 정책은: decide what will be done
- 예를들어 스케줄링: 프로세스에게 우선순위를 부여하고 kernel이 우선순위 높은것을 골라 실행시킨다. 여기에서 프로세스에게 우선순위를 부여하는 것은 일종의 policy이고 kernel이 골라서 실행시키는 것은 mechanism 이다.
- 한 policy에 여러개의 mechanism 가능하다(당연)

9. SYSGEN(system generation)
- 특정 하드웨어 구성 설정으로부터 정보를 얻는다
- bootstrap program: ROM(in BIOS)에 저장된 code. kernel을 로딩하여 메모리에 장착시키고 커널을 시작시킨다.
- 부팅 과정: bootstrap이 kernel을 HW로부터 로딩하여 메모리에 장착한다. ROM이 OS를 찾고 컨트롤러를 OS에게 넘겨준다. 그 후 shell을 동작시키면 완료

10. clk의 의미
1) 동기(구령)
2) Highest Priority: 0번~32번 또는 256번 등.. 0번은 clk!

* 참고: Address Space
 Text(code)
실제 소스 코드(어셈블리어) 
 Data
DWORD, array 잡거나, struct 데이타형 
 BSS(heap)
프로그램 전체의 global 변수 저장
Struct의 인스턴스 등 
 Stack
로컬 변수등
push개수: 함수 안에 선언된 local 변수만큼 
- 프로그램을 컴파일하면 위와같이 4개의 세그먼트로 이루어져 하드에 저장됨.
- 4조각을 모아 file이라 함
- run 상태에는 메인 메모리에 저렇게 4개가 쪼르르 올라감.. 



댓글남기기