운영체제 9

[운영체제] 5-2. Race Condition

오늘은 앞전 글에서 다룬 개념 중, Race Condition에 대해서 정리해보겠습니다. Race Condition 어떤 공유 자원이 있다고 할 때, 해당 자원을 접근하는 두 개의 프로세스가 실행되는 순서에따라 공유 자원이 다른 상태를 가질 수도 있는 경우. 즉, 각 프로세스의 실행이 독립적이 아닌 종속적인 상황을 의미합니다. 아래에는 그러한 상황을 예시로 보여줍니다. 여러 Producer 프로세스가 존재하여, 공유된 자원(Buffer)에 접근하여 데이터를 집어 넣습니다. 그러면 여러 Consumer 프로세스가 그 데이터를 빼서 쓰는 형태의 예시를 들어보겠습니다. +) 여기서 공유된 자원은 Producer와 Consumer가 프로세스인지 쓰레드인지에 따라 나뉩니다. 프로세스라면 Shared memory겠..

CS/OS 2023.10.03

[운영체제] 5-1. 프로세스 동기화

오늘은 프로세스 동기화에 대해서 다뤄봅니다. 5장에서 다루는 내용들은 운영체제 분야에서 다소 중요한 개념이므로, 꼭 그리고 자세하고 정확하게 짚고 넘어갑시다. 동시성 제어(Concurrency Control) 프로세스 동기화에 대한 설명을 하기 전, 동시성 제어에 대해 짚고 넘어가봅시다. 단일 프로세서를 기준으로 사실 컴퓨터는 하나의 일만 처리하므로 동시라는 말이 어울리지 않을 수 있습니다. 하지만, 매우 빠른 속도로 여러가지 일을 동시에 처리하는 컴퓨터는 마치 사람이 보기에는 동시에 처리되는 것처럼 보일 수 있죠. 동시성을 제어한다는 것은, 프로세스(또는 쓰레드)가 매우 빠른 속도로 변화함에 따라 데이터에 혼란이 있을 수 있는 사태를 방지해야한다는 것을 의미합니다. 따라서, 우리는 이러한 컴퓨터 자원을..

CS/OS 2023.10.02

[운영체제] 4-2. 쓰레드 정의

오늘은 쓰레드에 대해서 알아보고, 이와 유사한 개념인 프로세스와의 차이점까지 알아보겠습니다. Thread 쓰레드는 프로세스 내부의 instruction의 집합을 의미합니다. 즉, 프로세스의 하위 개념으로 쓰레드가 존재하는 것이죠. 따라서, 리눅스에서는 lightweight process(경량화 프로세스)라고도 부릅니다. 프로세스가 어떻게 구성되어있는지 기억하시나요?? 프로세스는 stack, code, data, PCB로 구성되어있다고 설명드린 바 있습니다. 그렇다면 쓰레드는 어떻게 구성되어 있을까요?? 쓰레드의 구성요소는 다음과 같습니다. stack thread control block 쓰레드는 프로세스의 instruction set이라고 했으니까, 메서드가 존재할 것이고 그렇다면 지역변수를 저장할 공간..

CS/OS 2023.09.27

[운영체제] 4-1. 프로세스 종료, IPC

3장에서는 프로세스가 생성될 때의 과정에 대해서 다뤘습니다. 오늘은 그러한 프로세스가 종료되기 위해서 거치는 과정들에 대해 알아봅시다. Process Termination 우선, 언제 프로세스가 terminated 상태가 되는지 알아보자. 프로세스가 exit()라는 시스템 콜을 부를 때 프로세스가 다룰 수 없는 signal을 받았을 때 자식 프로세스가 더 이상 필요 없어서, 부모가 자식을 kill할 때 signal이란 프로세스끼리 이벤트가 발생했음을 알리는 수단을 의미합니다. exit() 시스템콜을 사용하여 프로세스를 종료하고 싶다면 아래의 순서로 진행됩니다. 1. OS에 의해서 종료될 프로세스의 자원이 회수됩니다. 여기서 PCB는 제외합니다. 2. 부모 프로세스에게 death-of-child 시그널을 ..

CS/OS 2023.09.27

[운영체제] 3-3. 프로세스 스위치

이번에는 프로세스 스위치에 대해서 알아보겠습니다. Process Switch 쉽게 말하면 CPU가 처리하는 프로세스가 A에서 프로세스 B로 바뀌는 행위를 프로세스 스위치라고 합니다. 이전에 프로세스의 정의에서 다뤘던 Dispatcher가 프로세스 스위치를 행합니다. 이전 글에서 우리는 프로세스 컨텍스트를 배웠습니다. 여기서 프로세스 스위치와 비슷한 개념인 Mode change가 있습니다. 이것에 대해 알아보고, 이 둘의 차이점에 대해 다뤄봅시다. Modes of Execution 우선 그 전에, 프로세스의 실행 모드에 대해서 알아보겠습니다. 프로세스의 실행 모드는 유저모드와 시스템 모드가 있습니다. 유저모드는 이전 글에서 다뤘던 User Context와 System Context에 대응되는 개념이라고 생..

CS/OS 2023.09.23

[운영체제] 3-1. 프로세스 컨텍스트

오늘은 프로세스 컨텍스트에 대한 글을 다뤄보겠습니다. 프로세스 컨텍스트(Process Context) 프로세스가 실행하기 위해 필요한 컴퓨터 내의 정보 및 구성요소의 집합입니다. 프로세스 컨텍스트는 크게 User Context, System Context로 나눌 수 있습니다. User Context 프로그램 작성자에 의해 결정되는 context입니다. User Context는 Code, Data, Stack으로 구성되어 있습니다. Code : 프로그램 작성자가 작성한 코드 자체를 의미합니다. Data : 프로세스의 전역변수를 말합니다. Stack : 프로세스 즉, 프로그램 내에 있는 함수의 인자, 지역변수, 프로세스에 있는 함수를 호출하는 레지스터의 값을 저장합니다. 우리가 아래와 어떤 C 프로그램을 짰..

CS/OS 2023.09.23

[운영체제] 2-3. 프로세스 상태도

이번 글에서는 프로세스의 상태도 대표적인 5가지와, 추가적인 2가지까지 해서 총 7가지를 알아보겠습니다. 우선, 이전 글에서 첨부했던 사진을 다시 떠올려봅시다. 여기서 대표적으로 Not Running과 Running 상태를 나타냈었는데, 우선 먼저 Not Running의 세부 상태에 대해서 설명하겠습니다. Not Running Ready - 실행되기를 기다리는 상태입니다. 뒤에 설명한 대기 큐에서 실행을 기다립니다 Blocked(= wait, sleep) - 이벤트가 발생되기를 기다리는 상태입니다. 대표적으로 이 때, 사용자의 입력을 기다리는 상태를 Block이라고 할 수 있습니다. 대기큐(Ready Queue)라는 단어를 잠깐 꺼냈는데, dispatcher(이 개념은 전에 설명했습니다.)가 항상 대기 ..

CS/OS 2023.09.11

[운영체제] 1-1. 운영체제 개요

운영체제의 개요에 대해서 설명하겠습니다. 운영체제 운영체제는 컴퓨터 응용 프로그램이 실행되는 과정에서 하드웨어를 제어하고, 응용 프로그램 실행 결과를 보일 수 있도록 컴퓨터 내부 동작을 관리하는 소프트웨어를 말합니다. 우측 그림을 보면, OS는 사용자가 사용하는 프로그램들과 하드웨어 사이의 중간다리 역할을 합니다. 운영체제의 역할 1. 컴퓨터를 부팅한다. - 부팅 : 컴퓨터를 킨 이후에 사용할 수 있도록 준비하는 과정. 보조기억장치에 있는 운영체제를 메인 메모리에 옮기는 등과 같은 것을 의미 2. Process Management등으로 여러 응용프로그램을 실행한다. 3. 여러 개의 프로그램을 제어한다. 4. 입출력을 받거나, 파일을 관리(read, write)를 한다. 5. 컴퓨터를 사용한 후, 안전하게..

CS/OS 2023.09.10

[UTM] 로컬과 가상머신 파일 및 폴더 공유하기

운영체제에서 Virtual Box 툴을 사용하고, 나는 arm 환경이라 다른 툴을 사용해야했다.. 물론 쓸 수는 있지만 베타버전이기도 하고 실제로 해보니까 먹통인 부분이 많아서 arm 전용 툴인 UMT를 사용했다. 실제, 실습에서는 Virtual Box를 하다보니까 거기서 설정하는 것들을 UTM에 맞게 바꿔야하는데 잘 몰랐다.. 그 중에서, 내 로컬 환경에서 가상머신으로 파일을 전송하는 법을 알아보려고 한다. 우선 기본 전제는 UTM의 가상머신에 우분투가 설치되어 있어야한다. 참고로 아래에 사용하는 모든 명령어는 로컬에서 실행한다.(당연하겠지만..) 우선 로컬에서 가상머신으로 보내는 방법이다. $ scp [로컬 파일 경로] [원격 username]@[원격 ip]:~[원격에 저장할 경로] 이렇게 되면, 로..

CS/OS 2023.09.07