Computer Science/Operating System 36 Multi-threading Thread의 구현 Thread 구현 방법에는 크게 두 가지가 있다. user thread : user level 에서 구현해서 실행 kernel thread : kernel level 에서 구현해서 실행 User Thread user space에 있는 라이브러리에 있는 api를 이용해서 thread를 생성/사용한다. thread 생성/관리에 kernel의 개입이 필요하지 않기 때문에 create와 manage가 빠르다는 장점이 있다. kernel mode로의 전환(mode switching)에 대한 비용을 절약할 수 있다. 그러나 kernel이 single thread라면, 여러 thread 중 한개의 thread라도 waiting으로 갔을 때 모든 thread가 scheduling에서 제외가 된다. .. 2021. 6. 18. Thread Thread Thread는 execution의 단위로, 스케줄링의 단위이기도 하다. 기본적으로 하나의 process 안에는 하나의 thread가 존재한다. Multithreaded는 하나의 process 안에 여러 개의 thread가 있는 것을 말한다. Memory 관점 Thread는 자신만의 stack을 가져야 한다. 따라서 thread을 사용하면 메모리 구성이 달라진다. Concurrent Function Call 각 thread는 하나의 함수로 이루어져있다. thread를 생성할 때 함수를 지정해서 생성한다. 예 : rc = pthread_cureat(&threads[t], NULL, PrintHello, (void*) t); 일반적인 프로그램(single-threaded program)은 하나의 .. 2021. 6. 18. Cooperating Processes Cooperating Processes Independent Process vs. Cooperating Process 일반적인 프로그램들은 다른 프로그램들과 협력하지 않는 independent한 프로그램이다. Independent process는 다른 process의 실행에 영향을 주거나 받지 않는다. 어떠한 프로그램들은 다른 프로그램들과 협력한다. Cooperating process는 다른 process의 실행에 영향을 주거나 받는다. 다음과 같은 경우에 cooperating process를 사용한다. information sharing : 다른 프로그램과 정보를 공유하는 경우 computation speed up : 나눠서 연산을 수행함으로써 속도를 높이는 경우 modularity : 여러 프로그램들.. 2021. 6. 17. 프로세스 생성/종료 Instruction 실행 Instruction을 실행하는 것에는 크게 2가지 종류가 있다. 프로세스 : OS scheduler가 scheduling하는 대상 프로세스가 아니면서 instruction을 실행하는 것 : interrupt handler, scheduler Process Creation UNIX를 기준으로 새로운 프로세스를 생성하는 방법에는 2가지가 있다. scatch로 부터 만들어내는 방법 최초의 process(process 0) 생성 예 : process 0를 생성 기존에 존재하는 프로세스를 복제하는 방법 process 0를 복제 process 0 이후의 다른 프로세스들은 process 0를 복제해서 만들어진다. 예 : fork() system call Scratch로부터 프로세스를 만드.. 2021. 6. 17. Process Scheduling (Context Switching) Process Scheduling CPU는 짧은 시간 단위로 scheduling을 해서 process들을 번갈아가면서 수행한다. 이를 multitasking이라 한다. Multitasking을 위해서는 scheduling이 반드시 필요하다. OS가 memory에 load 된 여러 process들 중 다음에 실행할 process를 선택하는 것을 scheudling이라 한다. pseudo code로 나타내면 다음과 같다. while(1) { 프로세스 실행 : run the process for a while 프로세스가 CPU를 yield하거나 interrupt를 발생할 때까지 기다림 : wait until an interrupt happens or the process yields CPU 프로세스를 멈추고 .. 2021. 6. 16. 이전 1 ··· 3 4 5 6 7 8 다음