목록3학년 1학기/운영체제 (OS) (48)
오래 못 할 짓 하지 않기

CPU Scheduling 목적 : CPU 활용도를 최대로 하기 위해 ( 멀티 프로그래밍 / 멀티 태스킹을 사용함 ) ● CPU-IO Burst Cycle : burst = " 열심히 일한다 " 정도로 생각하면 된다. Load , add , read를 할 땐 CPU Burst Time 이고 I/O가 일을 할 때, 즉 CPU가 I/O 작업이 끝나기를 기다릴 때는 (I/O 기준) I/O Burst = (CPU 기준) I/O wait 라고 한다. (주로) CPU Burst 뒤에는 I/O Burst가 따라온다. - I/O bound process = 짧고 많은 개수의 burst로 이루어져 있음- CPU bound process = 적은 수의 burst로 이루어져 있음 ..

Threading Issue ● fork , exec - fork : 현재 명령어를 실행한 프로세스를 복제한다. 복제할 때는 만들어진 process는 Thread를 가져오지 않고, 단일 Thread 로 시작한다. - exec : 현재 프로세스를 새로운 프로세스로 덮어씌운다. ● Thread Cancellation Type - Asynchronous Cancellation 은 Cancel하기로 한 Thread를 즉시 Terminate시킨다. - Deffered Cancellation 은 Terminate 되어야 하는지 주기적으로 확인시킨다. Linux에서는 signal을 통해서 Thread Cancellation 이 이루어진다. Cancel을 할 수 있느냐 없느냐 상태도 있어서 이걸 Table로 나타내면 ..

먼저 알아야 하는 내용: ● pthread_create(): 새로 Thread를 만든다. ( Process에서는 Fork ) ● pthread_join() : 현재 있는 Thread를 다른 Thread가 return될 때까지 멈춘다. ( Process에서는 wait ) 예제 1) ● 배열 값이 1,5인 range1 을 parameter로 받는 thread 하나 생성 > thread_summation 에서 계산, > start = 1 , end 5 > 전역변수 sum에 1~5의 값을 더함 ※ Thread는 하나의 Process의 자원을 공유하기 때문에 다른 Thread에서도 이 값을 사용가능하다. > pthread_join를 해서, id_t1가 끝날 때까지 기다린다. ● 배열 값이 6,10 인 range2..

Thread - Process : 실행중인 프로그램 - Thread : 하나의 프로그램에서 2개 이상으로 나뉘어져 동시에 실행되는 하나의 단위 = 그냥 프로그램이라는 옷에 있는 한 가닥 실 이라는 표현이 정확할 것 같다. 스레드 특징 ) 하나의 프로세스 안에 있는 Thread끼리는 Resources를 공유한다. Process가 공장 Thread가 일꾼이라고 생각하면 된다. Thread Control Blcok (TCB) : Thread에 관련된 정보를 담아둔다. ● 정보 : - Thread id - Thread 상태 - Stack pointer - Prograrm counter - Pointer to PCB ( 자기가 속해있는 프로세스의 PCB 를 가리킨다. ) 근데 Thread를 쓰는 이유는? 하나의 ..

프로세스의 종류는 2가지가 있다. ● 독립적 Independent 이건 자기가 할 거 알아서 하면 됨 (우리가 오늘 배울 건) ● 협력적 Cooperating → Cooperate하는 프로세스끼리 서로 영향을 주고 받는다. 그러기 위해서는 Inter Process Communication IPC가 필요하다. IPC의 종류 ● Shared memory ● Message Passing 그럼 하나씩 알아보자 ● Shared memory ( Producer / consumer 개념 ) : 프로세스 간에 소통하려고 하는 곳에 있는 메모리 서로 정보를 직접 던지는 게 아니라, 프로세스 사이에 있는 메모리에 두고 거기로 주고 받는다. (쉽게 생각하면 케이시 헌병 건물에서 물건 받는 창구라고 생각하면 된다.) * Sh..

Process Creation ● Parent 프로세스가 Child 프로세스를 만든다. - 모든 프로세스에 id가 있다. = Process identifier - 프로세스들의 parent,child관계로 오른쪽 그림과 같이 트리를 만들 수 있다. 이와 관련된 명령어로는 다음과 같이 3개가 있다. ● fork() : 새로운 Child process를 만들고, 그 프로세스의 Pid를 return받는다. ex) int pid = fork() 하면 자식 프로세스의 pid가 변수에 저장된다. ※ 부모 프로세스에서만 변수 pid에 자식 pid가 저장됨, 자식 프로세스에서는 저 값이 0이다. ● exec() : 프로그램을 실행한다. 근데 이제,, 여러 추가 기능을 곁들인 ● wait() : 자식 프로세스가 끝날 때까..

프로세스 : 실행중인 프로그램 ● 현재 활동중인 상태의 프로세스는 PC값과 , Register들로 표현된다. ● 메모리에서 Process의 Layouts 1) 코드 영역 ( = 텍스트 영역) - [ 실행할 수 있는 코드 = 기계어로 이루어진 명령어 ] 가 저장되어 있다. - CPU가 실행할 명령어가 담긴St다. 2) 데이터 영역 - 프로그램이 실행되는 동안 유지할 데이터 저장 ex) 전역 변수 위에 나온 코드 영역 / 데이터 영역은 고정된 크기를 하는 즉, 메모리를 정적으로 할당하는 영역이다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 3) 힙 영역 - 실행되는 동안 동적으로 공간이 할당되는 영역 → 낮은 주소에서 높은 주소로 할당 4) 스택 영역 - 데이터가 일시적으로 저장되..

OS Design and Implemetation ● User Goal = 사용하기 쉬워야 한다. ● System Goal = Design과 Implement, Maintain이 간편해야 한다. Design할 때 고려해야하는 것 ● Policy = 어떤 게 되어야 하는가? = What ● Mechanism = 어떻게 구현할 것인가? = How OS Structure ● Monolithic 특징 1) 단조로운 구조 , Hardware의 기능이 제한적임 특징 2) System program / Kernel 영역이 나누어져 있다. ● Layered Approach : 가장 중심부 ( layer 0 ) = Hardware 가장 높은 곳 ( layer N ) = User Interface 특징 1) 만들기 단순하..

OS와 유저 사이 Interface 3가지 1. CLI ( Command Line Interface ) : shell 같이 커맨드 쳐서 띄우고 하는 거 2. GUI ( Graphical User Interface ) : Windows , 마우스 같은 거, 3. ( 비교적 새로 나온 거 ) Touch - Screen Interface : Android OS와 프로그램 사이에서의 Interface = System calls API : Application Programming Interface OS의 API = System call System calls의 위치는 다음과 같다. - System calls은 OS에서 사용가능하도록 만들어진 서비스를 이용할 수 있게 해준다. - OS 커널로 Function ca..

OS란? Hardware와 유저 사이에서 일을 해주는 곳이라고 생각하면 된다. - OS 는 Kernel과 부가적인 프로그램으로 이루어져 있음. Operation Device Controller는 Local buffer를 가지고 있다. > 만약 출력장치에 필요한 정보들이 한 번에 들어가면 그것들은 처리하지 못한다. ex) 프린터기에 여러 명령 한꺼번에 넣기. 따라서 Device Controller가 Buffer에 담아두었다가 , 사용 가능하다는 신호(Interrupt)가 오면 그 때 하나씩 가져간다. Interrupt : 하드웨어나 소프트웨어에서 주의를 해달라고 알려주는 신호 Device(Hardware or Software) ↔ CPU ex) 사용자가 어떻게 해달라 , 어떤 일이 끝났거나 시작되어야 한다..