본문 바로가기

IT

OS(Operating System)공룡책 2장 시험대비 정리자료 - 2장도 외워보자


지난번 포스팅 공룡책 1장 시험대비 정리자료에 이어서 2장 요약본 올려드립니다.

한번에 다 올리고 싶지만, 은근 손이가는 작업이라서 생각날 때 업로드 하도록 하겠습니다.

아참 블로그 포스팅 작성 후 해피캠퍼스에는 판매 중지를 하였습니다.

OS(Operating system) 공룡책 시험 정리자료"라는 콘텐츠

OS 공룡책 시험대비 요점 정리입니다.

영어 공부하기 불편하여 한글로 요점정리 해둔 후 출력후 달달외워서 시험봤습니다.

오늘은 공룡책 2장을 정리해 둔 것을 공개 하겠습니다. 오늘도 총 3장이고 챕터1을 외우는데 도움이 되셨다면 2장도 프린트하셔서 달달 외워보시면 좋을 것 같습니다.


Operating system Service: 프로그래머의 편리성을 위해 제공되는 서비스 -user interface -Program execution: 시스템은 프로그램을 메모리에 적재시키고 프로그램을 실행 시킨다. -I/O operation: -File-system manipulation: 프로그램은 파일을 읽고,쓰고,만들고,저장,검색 할 필요가 있다. -Communication: 프로세스는 정보를 교환 할 필요가 있다(네트워클 통해) -Error detection: 에러 검출(CPU, memory, I/O device 등) -리소스 allocation: 다중유저[작업]이 실행 될 때 리소스는 그들에게 각각 배당 되어야 한다 -Accounting: 어떤 user가 어떤 얼마나 어떤 종류의 컴퓨터 리소스를 이용하는지 알아야 함 -Protection and security User Operating System Interface -CLI: command line interface(텍스트 터미널을 통해 사용자와 컴퓨터 상호작용) -GUI: Graphic user interface(마우스,키보드,모니터 유저에게 친근한 장비를 통해 상호작용) -많은 시스템은 지금 CLI와 GUI인터페이스를 둘다 포함하고 있다. System Call: OS에 의해 제공되는 서비스를 위한 프로그래밍 인터페이스 - 일반적으로 hig-level language로 작성된다.(api이용) 2장 operating system structures Communications : processes가 정보교환할 때 shared memory또는 message passing을 통해서 한다. API : 운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식(easy, portability) system call parameter passing - parameters를 register로 전달(래지스터보다 더 많은 매개변수가 있을 수 있다) - parameters가 메모리내의 block이나 table에 저장 block의 주소가 register내에 parameter로 전달 - 프로그램에 의해 stack에 넣어질 수 있고 운영체제에 의해 꺼내짐 (장점 : 전달되는 parameters의 개수나 길이를 제한하지 않는다.) system call의 종류 : -process control: CreateProcess(), ExitProcess(), WaitForsingleObject() fork() exit() wait() -file management: Crate,Read,Write+File(), CloseHandle() open(),read(),write(),close() -device management: SetConsoleMode(), ReadConsole() WriteConsole(), ioctl() read() write() -information maintenance: GetCerrentProcessID(), SetTimer() Sleep(), getpid() alarm() sleep() -communications: CreatePipe(), CreateFileMapping() MapViewOfFile() pipe() shmget() mmap() -protection: SetFileSecurity() chmod() umask() chown() System Program: System program은 편리한 환경을 제공해준다 프로그램 개발과 실행을 위해 -File manipulation -Status information -File modification -porgramming language support -Program loading and execution -Communications -Application programs -대부분의 사용자가 보는 OS의 관점은 실제 시스템 콜 호출에 보다 시스템프로그램에 의해 정의된다. Operating System Design and Implementation -사용자 목적: 사요하고 배우기가 쉽고, 믿을 수 있고, 안전하고 신속한 운영체제 need -시스템 목적: 설계,구현,유지 보수 용이, 적응성, 신뢰성, 무오류성, 효율성 이 좋은 운영체제 -무엇을 할것인가? 무엇이 되게 할것인가? 어떻게 할 것인가? System Implementation: 요즘 O/S는 고급레벨어(C)로 작성될 수 있다. 코드를 고급언어로 작성하면(빠 른 작성, 간결함, 구독성, 디버그 ryd이, 이식성)등의 장점이 있다. 단점은: 속도가 떨어지고 저장장치를 많이 쓰는 것 Operating system structure -Symple Approach: 커널: 시스템 콜 인터페이스와 하드웨어의 하위 모든 것으로 구성, 파일 시스템에 CPU스케줄링, 메모리 관리 등 다른 Os 기능을 제공 -Layered Approach: 각 계층은 자신보다 저수준의 계층에 의해 제한된 연산만을 이용하여 구현 계층적 접근은 여러 계층을 적절히 정의하는 것이 어렵다, 각계층은 자신의 하위 계층만 사용할 수 있으므로 신정 한 계획이 필요하고, 효율성이 낮다. 수행시간이 오래 결린다. Micro kernel: 최서 한의 필수 기능만 커널에 추가시킨다(address space, interprocess communication, basic scheduling) -장점: micro kernel 연장이 쉽다., 새로운 구조의 OS를 포트에 싣으려 할 때 -단점: 가중된 시스템기능 오버헤드로 인해 성능이 낮아 진다. Modules: 대부분의 현대 OS는 커널 모듈을 구현한다. -객체 지향 기법 사용, 각각의 중요 부품이 구별, Virtual Machine: 한컴퓨터 한드웨어가 다수의 다른 실행환경(다수의 Os)를 제공, hos시스템은 virtual machine에 의해 보호 된다. O/S개발에 완벽한 도구이다., Java Virtual Machine:~ Loader : code나 data를 memory로 가져오는 프로그램 * absolute / relocatable loader(static/dynamic loader) - absolute : 항상 같은자리로 로드 - relocatable : H/D갔다 다시 memory로 올 때 relocation할 수 있다. static loader : loading이 runtime전에 일어남 dynamic loader : loading이 runtime 동안에 일어남, 루틴이 호출될 때까지 디스크에 재배치 가능한 형 태로 있다가, 호출되면 기억장치로 적재된다.(호출되지 않는 루틴은 load되지 않기 때문에 기억장치 공간 의 사용률 좋다, 크고 자주 사용되지 않을때에도) Linker : main module을 library와 link시켜줌 static linker : linking이 runtime전에 일어남 dynamic linker : linking이 runtime 동안에 일어남(save space) * stub은 필요한 routine이 memory에 잇는지 보고 없으면 memory에 load한다. * dynamic linker는 한번만 memory로 가져와서 뿌려주고, loader는 같은거라도 두 번 가져옴 Microkernel : 점점 커널이 커지고 관리하기 어려워지므로, 불필요한 요소들은 제거하고 작게 만든 커널. 제거된 요소는 사용자 수준 프로그램으로 구현 유저 모듈간의 communication은 message passing을 통해서 이루어짐 장점 : extend하기 쉽고(새로운 service를 추가하고, 커널 수정이 요구되지 않는다) 이식도 용이, 적은 code가 kernel mode에서 동작하므로 reliable하고, secure 단점 : user space와 kernel space간의 communication에 overhead 가 있다. layer와 modules의 차이 : layer는 서로 communication 불가(인접만 가능), modules은 가능 (microkernel과는 조금 다름 이건 message passing 필요없음) virtual machine은 layered approach - virtual machine아래에 깔려있는 하드웨어와 동일한 인터페이스를 제공한다. 장점 : 각각의 VM으로 구분되어 있어서 system resource의 완벽한 보호를 제공한다. 운영체제 연구와 개발을 위한 유용한 도구로 사용가능하다. 운영체제는 전체 기계상에서 수행되고 제어하는 프로그램이기 때문에 변경하고 검사하는 동안에는 현재 시스템이 중지되어야하는데(시스템 개발시간) VM은 시스템 프로그래머에게 각각 자신의 VM이 주어지고 개발은 VM상에서 행해지게되므로 시스템동작을 중단할 필요가 없다. 호환문제 해결가능.(ex : JAVA) 단점 : 구현이 어렵다. (깔려있는 머신의 정확한 복제품을 제공해야하므로) 자원의 직접공유가 않된다. 두가지 해결책 : 미니 디스크 공유(물리적 디스크 공유방식을 따름), 가상기계의 네트워크 정의 가능 booting: 커널을 적재함으로서 시작되는 컴퓨터 Bootstrap program: 코드는 ROM에 저장되어 있고 이는 커널의 위치, 메모리 적제[[실행] 시작해둔다.

os2장_시험대비.pdf


반응형