목록운영체제 (31)
Shine's dev log
1. Thread Library 우리가 실제로 코딩을 할 때, 쓰레드를 새로 만들거나 관리하고싶다면 Thread library를 살펴봐야한다. 리눅스계열에서는 Pthread라는 라이브러리를 사용하는데, 이 라이브러리는 운영체제가 주는 기능들을 쓸 수 있게 API를 제공해준다. Pthread 에서는 쓰레드 creation, synchronization 등과 같은 여러 기능들을 제공해주는데, 일정한 standard만 정의되어 있을 뿐, 직접적으로 구현하는것은 사용자들의 몫이다. 2. 쓰레드를 보는 두가지 관점 우리가 멀티쓰레드 모델을 살펴보기 전에, 쓰레드를 보는 두가지 관점을 먼저 알아봐야한다. 쓰레드는 운영체제가 볼때와 어플리케이션이 볼 때 그 모양이 다를 수 있다. 이는 ..
1. Concurrency와 parallelism 운영체제를 공부하다보면 concurrency와 parallelism이라는 단어가 정말 많이 나오고, 나올때마다 헷갈리는 개념이다. 둘 다 우리나라말로 번역하면 '병렬적...인..' 정도의 뜻을 가지고 있고 명확히 분리되는 개념은 아니기 때문에 헷갈리는게 지극히 정상이다. 앞으로 운영체제를 더 공부해나가기 전에 확실하게 둘의 차이를 알아보자. Concurrent란 한개이상의 일들이 상태가 전진되어가며 진행되는 것을 말한다. 시간과 관계없이 그냥 여러 task들이 making progress를 하고 있으면 어쨌든 concurrency가 있다고 한다. Parallelism이란 여러개의 일들을 같은 시간상에서 봤을 때 정말 동시에 처리되는 경..
1. 쓰레드(Thread)란? 우선 쓰레드라는 말이상황에 따라 다르게 쓰일 수 있다는 점을 인지해야 한다. CPU 제조사들이 말하는 쓰레드와, 운영체제 관점에서 바라보는 쓰레드는 다소 차이가 있다. 오늘은 운영체제 관점에서 바라본 쓰레드를 다룬다는 점을 미리 알아주세요. 우선, 쓰레드라는 것이 나오게 된 배경을 살펴보자. 앞서 공부했듯이 프로세스라는 추상화 모델을 이용하면, 프로그램을 돌리는데 굉장히 효과적이고 빨랐다. 동시에 여러가지일을 처리하려면 여러 프로세스를 만들어야 하는데, 프로세스를 하나 새로 만드는 것은 굉장히 복잡하고 무거운(?) 일이기 때문에, 보다 가볍게 할 수 있는 방법은 없을까? 생각을 하다 나온 개념이 바로 쓰레드 이다. 쓰레드는, 프로세스에서 execution ..
앞서 말했듯이 UNIX에서는 모든 것을 파일로 생각하고, 처리한다. 1. 파일의 종류 UNIX에서 취급하는 파일은 크게 5가지 종류로 구분할 수 있다. regular, direcotry, special, socket, symbolic link 등이 있다. 이렇게 종류를 구분할 뿐, 결국 유닉스는 다 파일로 생각하고 처리한다. 2. File descriptor 모든 프로세스들은 자신들의 file descriptor를 가지고 있다. (process table entry 라고도 불린다) file descriptor를 간단하게 설명하면, 프로세스가 파일에 접근하고자 할 때, 이를 관리하는 표 이다. 특정 파일을 open() 하면, 운영체제는 file descriptor에 그 파일에 대한 정보를 심어준다. 위의 ..
일반적으로 사용자들은 윈도우 운영체제를 많이 사용한다. 하지만, 위와같은 운영체제 외에 아주 강력하고 널리 쓰이는 운영체제가 있으니 그 이름은 바로 Unix이다. 유닉스에 기반을 둔 운영체제로는 Linux, Mac os, 안드로이드 등이 있다. 이처럼 유닉스는 서버용이나 모바일용 운영체제로 많이 쓰인다. 1. UNIX의 특징 UNIX의 특징은 대표적으로 두가지가 있다. 하나는 Time sharing이고, 다른 하나는 conversational system 이라는 것이다. 뭐 사실 거의 모든 운영체제가 가지고 있는 특징이긴 하지만, 한번 짚고 넘어가봤다. 2. UNIX의 구조 위의 그림이 유닉스의 구조를 가장 잘 나타낸 그림이다. 우선 가장 안쪽의 핵심적인 부분을 커널이라고 부른다. 이 커널에 접근하기 위..
지난번에 프로세스끼리의 통신 모델에 대하여 알아보았다. 그렇다면 이제 이론적인 개념에서 벗어나 실제로 어떻게 프로세스들끼리 통신을 하는지 알아보자. Inter-process communication의 방법으로는 크게 1) signals 2)RPCs 3)pipe 이렇게 세가지를 대표적으로 생각해볼 수 있다. 1. signals signal은 어떤 프로세스가 다른 프로세스에게 또는 운영체제가 다른 프로세스에게 "너 이런이런 일이 발생했어" 라고 알려주는 것이다. 이렇게 알려준 내용을 운영체제가 상대방에게 전달해주고, signal을 받은 프로세스는 signal handler가 signal을 처리해준다. 예를들어 프로세스가 실행중일때 컨트롤+c 를 누르면 운영체제가 그..