본문 바로가기

컴퓨터 COMPUTER33

9. [Process Communication] : 프로세스들은 어떻게 소통할까 하나의 프로세스 당 하나의 프로세스만 돌아가도 된다면 참 행복하겠지만, 사용자는 한번에 여러가지 일을 수행하고 싶어하기 마련이다. 이에 따라 프로세스 간의 충돌을 최소화하고 멀티 프로세싱에서의 효율을 높이는 것이 OS 의 고질적인 과제가 되었다. 프로세스 간의 소통에는 다음과 같이 2가지가 메인 목표이다.① Communication : data exchange - 같은 메모리 안에 있는 자료를 서로 다른 두가지 이상의 프로세스가 사용할 때 어떻게 자료를 관리할 것인가② Synchronization : 프로세스 간의 순서 매기기, 동기화 하기 2가지를 만족시키기 위해서 Application Programming (shared memory) 혹은 IPC (interprocess communication) 을.. 2019. 1. 31.
8. [Execution of the Operating System] : OS 가 움직이는 방법 OS 가 어떻게 생겨먹었는지, 어떻게 움직이는지를 알아보자. 좀 추상적이긴 하지만 OS 설계에 대한 3가지 대표적인 접근법이 있다. ​① Execution within User Processes: 유저프로세스의 일부로 kernel 이 위치하고 있다는 접근. OS가 Program Image와 직접적으로 연결되어 있다는 접근법이다. 이 설계방법에서는 각 프로세스에서 인터럽트, 시스템 콜 같은게 일어났을 때 process switching 을 완전히 안해도 mode switch만으로 기능을 수행할 수 있다는 장점이 있다. 위 그림처럼, 프로세스의 일부처럼 OS 가 붙어있고 오직 프로세스 스위칭을 할 때에만 큰 오버헤드를 가지게 된다. 하지만 가용한 유저메모리가 줄어든다는 단점이 있다. 지금 공부하고 있는 리눅.. 2019. 1. 30.
7. [Process Switching] : 프로세스 스위칭, 프로세스 순서매기기 프로세스 스위칭에 다가가기 앞서, Dual mode operation 을 복습해보자.User mode 는 유저 프로그램이 실행되는 모드였고, Kernel mode 는 조금 더 높은 권한을 가지는, 프로세서의 기능을 완전히 제어할 수 있는 모드였다. (참고로 Kernel은 영어로 알맹이, 핵심 뭐 이런 뜻이다.) - 정말 간단한 복습 끝​두가지 모드를 복습한 이유는.. mode switching 없이는 process switching 이 일어나지 않기 때문이다. mode switching은 말그대로 mode 가 바뀔때마다 일어난다. User mode 에서는 ① external interrupt (timer, I/O interrupt 와 같이 진행 중인 프로세스와 관계없는), ② Internal Trap (.. 2019. 1. 30.
6. [Process State, Scheduling] : 프로세스의 상태와 스케쥴링 프로세스는 항상 5가지의 상태 중에 하나를 가지게 된다. 아래 발그림 + 설명을 통해 자세히 알아보자. ① 프로세스가 막 생성되었을 때 New 라는 상태를 가진다. ② 생성 후에 Admit 되면 Ready 상태로 넘어간다. Ready 상태에 있다는 것은 프로세서가 그 프로세스를 맡게 되기 까지 대기하는 것이며, 'ready queue' 에 서 기다리는 상태이다. ③ 대기 중인 프로세스가 순서가 되면 프로세서에 의해 그 프로세스의 instruction 이 실행된다. 이 과정을 Dispatch 라고 하며 이 때 프로세스의 상태를 'Running' 이라고 한다. 실행 중이던 프로세스가 프로세서에 할당된 시간을 다 썼다면 'Timeout' 상태가 되어 다시 Ready queue 로 돌아간다. ④ 실행 중이던 프.. 2019. 1. 30.
5. [Processes] : 프로세스란 무엇인가 컴공이라면 이미 여러번 마주쳤을 두 단어가 있다. 프로세스와 프로그램. 간단히 이 두 개념을 구분하자면, 어떠한 코드가 컴파일되면 프로그램이 되고, 프로그램을 실행하면 그것이 프로세스가 된다. 프로그램은 코드의 집합체라고 생각하면 간단한데, 이걸 RAM 에 올려 CPU 가 그걸 돌릴 때 프로세스라고 한다. 따라서, 운영체제에서는 프로세스를 다음과 같이 정의한다. process : an instance of a running program. (a program in execution)돌아가고 있는 프로그램의 객체라고 말한다.그렇다면 프로세스는 무엇으로 이루어져 있을까? 참고로 운영체제를 공부하기 위해 반드시 처음부터 프로세스의 구성을 제대로 알고 있어야 한다. ★매우 중요★​① Images 1) code .. 2019. 1. 29.
4. [Virtual Machine(VM)] : 가상머신이란 무엇인가 가상머신(VM) 이란 무엇이고, 왜 필요한 걸까?: 어플리케이션 프로그램은 특정 ISA + OS 에 맞춰서 설계된다. 예를 들어서 매킨토시 앱은 PowerPC + MacOS 위에서만 돌아갈 수 있고, 리눅스 앱은 x86+Linux 위에서만 돌아갈 수 있다. 가상머신은 이러한 어플리케이션을 돌리는 데 있어서 생기는 한계점을 없애기 위해 등장하였다. 가상머신은 하나의 기기로 다양한 컴퓨팅(특히 네트워크 관련)이 가능하도록 하며, single OS 보다 더 보안에 강하다.(Portability , Flexibility 를 높이는!)가상머신(VM)의 기본 원리와 종류: 가상머신은 실제 호스트에 어플리케이션을 얹기 위해서 한 레벨의 소프트웨어를 만든다. 가상머신의 종류에는 각 프로세스를 가상화하는 Process .. 2019. 1. 29.
3. [System Call Handling] : 운영체제는 어떻게 시스템콜을 핸들링하는가. + System call vs. API * 참고로 아래 설명은 모두 리눅스 운영체제 기반의 내용입니다.​SYSTEM CALL :이전 게시글에서 user mode 에서 kernel mode 로 가기 위해서 'system call' 이라는 것을 호출하면, system call handler 가 사용자가 원하는 행동을 할 수 있게끔 도와준다고 했다. System call은 돌아가는 프로그램과 운영체제 간에 인터페이스를 제공한다. 그럼 이 system call의 종류에는 무엇이 있을까?​시스템 콜은 기능에 따라 크게 세가지 - process management, file management, file system management - 로 나눌 수 있다.① Process management : fork, waitpid, execve, exit, ki.. 2019. 1. 29.
2. [OS service, structure and design] : 운영체제의 역할, 구조, 디자인 운영체제의 역할① User Services​ : Program execution, I/O operation, File System manipulation, communication, error detection② Resource Allocation : 여러가지 프로그램을 한번에 돌릴 때 적절히 자원을 배분한다.③ Accounting : 자주 쓰는 프로그램을 빨리 load 할 수 있도록 사용자의 행동을 트래킹한다.④ Protection : 시스템 자원으로의 모든 접근을 제어할 수 있다.​운영체제의 구조: 하드웨어와 유저레벨 사이에 커널모드를 둠으로써 추상화 목적을 실현한다.​운영체제 디자인: OS 를 디자인할 때 고려해야하는 것을 나누어서 고려해보자면,① User Goal : 쓰기 쉽게, 배우기 쉽게, 안.. 2019. 1. 29.
1. [Hardware Protection for OS] : 운영체제는 어떻게 생겼을까 컴퓨터의 프로세서는, 하드웨어/OS 를 보호하기 위해 Dual mode operation을 사용한다.Dual mode = User mode, Kernel mode① User mode - execution by user ② Kernel mode - execution by operating system​User mode / Kernel mode 는 보호된 Process register 에 저장되어있는 Status bit 에 따라 설정된다. User mode 에서 Kernel mode 로 이동하는 데는 크게 세가지 원인이 있다. ≫ Hardware Interrupt, Software Interrupt (exception), System call. Software interrupt 내에서 System call .. 2019. 1. 29.