목록CS 지식/운영체제 (6)
Taking baby-developer steps

쓰레드에는 2가지 타입이 있다. •유저 쓰레드(user) : 사용자 모드에서 사용하는 쓰레드(유저 모드에서 쓰레딩 한 쓰레드) •커널 쓰레드(kernel) : 커널 모드에서 사용하는 쓰레드(운영체제가 직접 매니징하는 쓰레드) 쓰레드는 운영체제가 지원. 그런데 자바(버추얼 머신임. 운영체제 아님)도 쓰레딩 기능을 지원한다. 자바는 운영체제가 아니므로 cpu를 넘나들 수는 없다.이와같이 운영체제의 쓰레드와는 무관한 쓰레드(green 쓰레드 라고도 함)를 user 쓰레드 라고 하고, kernel 쓰레드는 코어에서 직접 쓰레딩을 할 수 있는 것을 커널 쓰레드라고 하고, 이는 운영체제가 직접 관리 한다. ? 유저 쓰레드와 커널 쓰레드가 그래서 어떤 관계인데? 기본적으로 우리는, 쓰레드 라이브러리가 있어야 쓰레드를..

현재까지는 흐름(쓰레드가)이 하나뿐인 프로세스를 생각해 왔다. 그러나, 하나의 프로세스는 여러개의 쓰레드들을 컨트롤 할 수 있다. •프로세스가 한번에 여러개 동작 할 수 있었던 이유? cpu가 program counter를 가지고 있고, 이를 context switching 할시에 바꿔주면 , 각각의 실횅할 프로세스의 context를 가지고 와서 실행 할 수 있다. →이 때, 이 pc(program counter)즉, register set 정보만 별도로 유지 한다면, 하나의 프로그램(프로세스 안에서) 굳이 fork할 필요 없이, 실행 쓰레드만 달리 할 수 있다. •쓰레드란? ◦a lightweight process (LWP) ◦멀티 쓰레딩이 제공 될 때, 실제로 “CPU를 점유하는 기본 단위”이다 ◦어..

이번 포스팅 그림 요약— 프로세스의 실행 - 독립적 실행 / 협력적 실행—> 독립적 실행인경우 CPU의 타임 스케쥴링만 잘 해주면 문제 없음.협력적 실행이 필요한 경우가 있음.독립적 실행 → 공유하는 데이터도 없고 메세지 주고받을 사항이 없는 경우. 협력적 실행 → 영향을 주거나 받는 경우 ⇒ 데이터를 공유하거나 메세지를 주고 받는 경우IPC (Inter_process Communication)데이터를 주거나 받거나 하는 경우.→ 공유 메모리를 써서 데이터를 주고 받는 방법→메세지를 주고 받는 방법 중한가지로 통신을 하면 된다.공유 메모리 방법 : 예를 들어, Process A(아빠)와 Process B(아들) 사이에 shared memory(용돈함)이 있어서, 아빠가 용돈을 넣으면 아들이 가져가는 구조..

context switch를 하기 위해 동기화(synchronization)을 잘 해야하는데,(동시성 제어) 이 전에 프로세스는 어떻게 생성해야하는지를 알아야한다! (다음 시간엔 프로세스간 통신 (IPC)에 대해 학습할 예정!) 유닉스 계열 OS에서, 새로운 프로세스의 생성은 반드시 fork() system call을 이용하게 되어있다. ⇒ 자식 프로세스는 보통 “a copy of the address space”해서 만든다. == 현재 나의(부모의) 프로세스의 주소 공간을 복사해서 만든다. —> 부모 프로세스와 자식 프로세스는 fork() 시스템 콜 이후 계속 실행이 되는데, return code에서 차이를 보인다. → fork()의 return code가 0 이면 —> 자식 프로세스 → 0이 아닌 p..

운영체제? •컴퓨터 하드웨어를 관리하는 소프트웨어 •유저와 하드웨어 간의 중간다리 역할을 한다. 컴퓨터 시스템엔 크게 4가지의 컴포넌트가 있다고 생각할 수 있다. •하드웨어 •OS •애플리케이션 프로그램들 •사용자 유저는 OS에 요청만 하면 서비스를 제공 받을 수 있다. 사실 운영체제의 정의는 매우 많다. 단 한가지로 정의 할 수가 없기 때문. 주로 흔하게 많이 하는 정의는 그저 “the one program running at all times on the computer”일 뿐. 이 흔한 정의대로, 운영체제를 항상 작동되고 있는 한 프로그램이라고 본다면, 운영체제의 가장 중요한 부분은 바로 “커널”이다. 커널에서 시스템 프로그램과 애플리케이션 프로그램들에 대한 “인터페이스”를 제공해 준다. 전통적인 ..

운영체제가 뭘까? 왜 배워야 할까? → 운영체제란, 컴퓨터 시스템을 운영하는 소프트웨어! ->컴퓨터는 뭐지?→ 정보를 처리하는 기계! → 정보는 뭔데? → 클로드 섀넌의 정의에 의하면, 어떤 사건 x가 있을 때, 이 사건 x의 정보량(부피, 크기 )는[I(x)] 이 사건이 발생할 확률[P(x)]에 -log2 한 값이라고 정의한다. ex> 동전 던지기 어떤 사람 A가 동전을 던져서 앞면이 나왔는지, 뒷면이 나왔는지(확률은 1/2) 를 B에게 전달 한다고 할 때, 전달하는 정보의 량[I(x)] = -log2(1/2) =- log2(2^(-1)) = log2(2) = 1 • 정보의 단위는 뭘까? ⇒ bit 즉, 정보란 “어떤 불확실한 상황”을 측정해서 수치적으로 표현한 것이다! •이런 정보를 컴퓨터는 어떻게 ..