[운영체제] 7. 교착상태
·
운영체제
교착상태란?교착상태라는 말은 프로그래밍 이외에서도 자주 사용되는 말이다. 차가 막혀서 도로에서 이러지도 저러지도 못하는 상황이라던가, 협상의 진전이 없는 상황이라던가 다양한 모습으로 교착상태를 떠올려볼 수 있다.  운영체제에서 교착상태는 자원을 소유한 스레드들 사이에서 각 스레드이 다른 스레드가 소유한 자원을 요청해 모든 스레드가 무한정 대기하는 상황을 말한다.  이는 다중프로그래밍의 고질적인 문제점이라고 할 수 있다. 운영체제는 스레드들에게 자원을 할당해줘아 햐는데 스레드는 하나의 자원만 필요한 것이 아니기 때문이다.   T1부터 T5까지 다섯 개의 스레드가 5개의 CPU에서 동시에 실행되면서 자원을 한개씩 소유하고 있다고 해보자. 그런데 이 상황에서 다른 스레드가 가진 자원을 요청하게 된다면 이때 교..
[운영체제] 6. 스레드 동기화
·
운영체제
스레드 동기화는 왜 필요한 것일까?간단히 말하면 다수의 작업이 공유 데이터에 접근하면 공유 데이터가 훼손될 수 있기 때문이다. 그리고 여기서 다수의 작업이란 프로세스의 작업을 수행하는 스레드라고 할 수 있다. 따라서 공유 데이터에 대한 스레드들의 동시 접근을 해결하는 것이 스레드 동기화의 목표라고 할 수 있다. 스레드 동기화를 위한 가장 간단한 해결 방법은 한 스레드가 공유 데이터 사용에 사용을 마칠 때 까지 다른 스레드가 공유 데이터에 접근하지 못하도록 막는 것이다.  공유데이터 훼손 문제 그런데 사실 이렇게 말로만 공유데이터가 훼손된다고 하면 뭐가 어떻게 훼손된다는건지 직접적으로 이해하기 쉽지 않다.  여기 sum = sum + 10이라는 연산을 수행하는 코드가 있다. 이를 기계 명령으로 보면 mov..
[운영체제] 5. CPU 스케줄링
·
운영체제
프로세스의 실행단위인 스레드를 실행할 때 어떤 스레드를 실행할지 스케줄링을 통해 선택된다고 설명해왔었다.  이제 그 스케줄링이 무엇인지 그리고 어떤 스케줄링 알고리즘들이 존재하는지 알아보자.  1. 스케줄링 개요 한정된 자원에 대한 경쟁이 있을 때 우린 누구에게 자원을 할당해줘야 할지 선택해야 한다. 즉 CPU 자원을 누구에게 할당할 것인지 결정하는 것이 CPU 스케줄링인 것이다. 여기서 선택의 대상이 되는 스레드는 '준비' 상태에 있는 스레드들이다.  스케줄링이 필요하게 배경에는 다중 프로그래밍의 등장이 있다. CPU가 쉬는시간인 CPU 유휴 시간을 줄이기 위해 만들어진 다중 프로그래밍 기법은 I/O이 발생하면 실행하고 있는 프로세스를 중단하고 다른 프로세스를 실행한다.  그런데 어떤 프로세스를 메모리..
[운영체제] 4. 스레드와 멀티 스레딩
·
운영체제
이전 포스팅에서 프로세스와 프로세스 생명주기 등 프로세스가 OS에 의해 어떻게 관리되는지 알아봤었다. 그리고 스레드가 프로세스보다 더 작은 단위로서 프로세스를 실행하는 단위가 된다는 것도 알아보았다. 그럼 이번에는 그 스레드가 도대체 무엇인지 더 자세히 알아보도록 하겠다.  4 - 1 프로세스의 문제점 컴퓨터가 처리하고자 하는 일의 단위를 작업(task)라고 한다. 이 task는 프로세스를 만들어내며,1980년대까지 Unix기반 OS의 실행 단위는 프로세스였다.  그런데 프로세스가 실행단위일 때 생기는 문제점이 존재했다.먼저, 1) 프로세스 생성에 걸리는 시간이 크다는 것이다. 이는 프로세스를 생성할 때 큰 오버헤드를 가져온다는 것을 의미한다. 이전에 알아보았지만 프로세스를 생성하는 과정은 메모리 할당,..
[운영체제] 3. 프로세스와 프로세스 관리
·
운영체제
3 -1. 프로그램과 프로세스이제 프로그램과 프로세스에 대해서 본격적으로 알아볼 때 가 된 것 같다.이 전에도 말했겠지만  프로그램은 하드디스크, USB등 저장 장치에 저장된 실행 가능한 파일을 말한다. 프로그램이 메모리에 적재되어 실행중일 때 이를 프로세스라고 부른다. 여기서 실행중이라는 것은 CPU에 의해 실행되거나, 준비 상태이거나, 실행 대기 상태이거나. 이 모든 상태를 실행 중이라고 말한다.  즉 OS는 응용프로그램을 메모리에 적재하고 ,이때 부터 프로세스라고 부를 수 있는 것이다.  프로세스의 특징을 알아보자.OS는 프로르램을 메모리에 적재하고 이를 프로세스라고 한다. OS는 프로세스에게 필요한 메모리를 할당하고 코드와 데이터들을 적재한다.프로세스는 서로 독립적인 메모리 공간을 갖는다(가상 메..
[운영체제] 2. 컴퓨터 시스템과 운영체제
·
운영체제
2-1 컴퓨터 시스템과 하드웨어  시스템 계층 구조 컴퓨터 시스템은 다음과 같은 3개의 요소들이 층을 이루고 있다.   컴퓨터의 시스템 계층 구조는 다음과 같은 특징을 가지고 있다. 1. 사용자는 응용프로그램이나 OS 패키지에 포함된 GUI와 도구 프로그램을 통해 컴퓨터를 활용한다.2. 하드웨어는 OS의 베타적이고 독립적인 지배를 받는다.3. 어떤 사용자나 응용프로그램도 직접 하드웨어에 접근할 수 없다. 오직 운영체제를 통해서만 접근 가능하다.  OS는 응용프로그램과 하드웨어 사이에서 중계자 역할을 수행한다. 즉 하드웨어를 사용하는 사람이 하드웨어에 대해 잘 알지 못해도 사용할 수 있도록 추상화시켜준다고 생각할 수 있다.   하드웨어컴퓨터 하드웨어를 좀 더 자세히 살펴보겠다.   컴퓨터는 크게 CPU, ..
[운영체제]1-2 운영체제의 태동
·
운영체제
지난 포스팅에서 운영체제가 무엇인지 알기 위해 운영체제의 개념에 대해 알아보았다. 그럼 이 운영체제는 어떻게 생겨나게 된 것일까?  1.  고정 프로그램 컴퓨터 시대 - 1940 년대이 당시 컴퓨터는 현재 우리가 사용하는 컴퓨터와는 상당히 다른 모습을 가지고 있다.이 시기는 소프트웨어라는 개념 자체가 존재하지 않고 컴퓨터의 모든 기능을 하드웨어로 만들었다. 이때의 컴퓨터는 단지 실행하고자 하는 하나의 작업을 수행하는 기계에 불과했다.  어떤 작업(이제 작업을 프로그램이라 부르겠다)을 기게에 심고 나면, 그 컴퓨터는 그 작업만을 수행할 수 있었다.즉 하나의 기계는 하나의 기능만을 수행할 수 있었던 것이다. 그렇기에 새로운 기능을 구축하는 일은 매우 어려운 일이었다. 당연히 CPU와 메모리의 개념이 분리되지..
[운영체제] 1-1 운영체제 개념
·
운영체제
운영체제(Operating System)란 무엇일까? 운영체제는 실체가 있는 '소프트웨어'로 컴퓨터를 관리하는 특별한 기능의 코드 집합 혹은 프로그램이다.  운영체제의 정의 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행을 관리하고 제어하는 소프트웨어컴퓨터가 켜질 때 메모리에 적재되어 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어운영체제는 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어이를 다시 풀어 써보면 운영체제는 우리가 전원을 켜면 가장 먼저 만나도록 약속된 소프트웨어이다. 예를 들어 윈도우, 리눅스, 맥 OS 등등 다양한 운영체제가 존재할 것이다. 그리고 이 소프트웨어는 사용자가 컴퓨터를 '잘'사용할 수 있도록 돕는다. 그리고 이를 위해 운영체제..