<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Process on Kelly Dev</title><link>https://kelly-chui.github.io/tags/process/</link><description>Recent content in Process on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 19 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/process/index.xml" rel="self" type="application/rss+xml"/><item><title>OS. IPC(Inter-Process Communication)</title><link>https://kelly-chui.github.io/posts/cs-os-ipc/</link><pubDate>Sun, 19 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-os-ipc/</guid><description>&lt;p&gt;Date: January 19, 2025
Multi-select: Process&lt;/p&gt;
&lt;h2 id="ipc"&gt;IPC&lt;/h2&gt;
&lt;p&gt;여러 개의 독립적인 프로세스들이 서로 데이터를 주고받을 때 사용하는 메커니즘을 IPC(Inter Process Communication)라고 한다.&lt;/p&gt;
&lt;p&gt;각각의 프로세스는 별개의 메모리 공간을 가지기 때문에, 서로 직접 메모리에 접근할 수 없기 때문에 IPC는 프로세스 간에 데이터를 교환하는 방법을 제공한다.&lt;/p&gt;
&lt;h2 id="메세지-패싱"&gt;메세지 패싱&lt;/h2&gt;
&lt;p&gt;직접 메모리를 공유하지 않고 메세지를 통해 데이터를 주고받는 방식, 격리성을 보장할 수 있는 장점이 있지만 속도가 느리고 메모리 소비가 증가한다는 단점이 있음&lt;/p&gt;
&lt;h3 id="주요방식"&gt;주요방식&lt;/h3&gt;
&lt;h4 id="simple"&gt;Simple&lt;/h4&gt;
&lt;p&gt;간단히 메세지를 보내고 받는 방식&lt;/p&gt;</description></item><item><title>OS. Context Switching</title><link>https://kelly-chui.github.io/posts/cs-os-context-switching/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-os-context-switching/</guid><description>&lt;h2 id="컨텍스트-스위칭"&gt;컨텍스트 스위칭&lt;/h2&gt;
&lt;p&gt;CPU가 현재 실행 중인 프로세스나 스레드를 중단하고, 다른 프로세스나 스레드를 실행하는 과정. 멀티 태스킹 환경에서 하나의 CPU가 여러 작업을 번갈아 가며 처리할 수 있게 만들어 준다.&lt;/p&gt;
&lt;h3 id="언제-발생하나"&gt;언제 발생하나?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CPU 스케줄러가 다른 작업을 선택했을 때(그러면 다른 프로세스를 써야하니까)&lt;/li&gt;
&lt;li&gt;실행 중인 작업이 블로킹 되었을때 (I/ O같은게 들어왔다거나 할 때)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="과정"&gt;과정&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;현재 작업(프로세스, 스레드)의 컨텍스트를 저장한다.&lt;/li&gt;
&lt;li&gt;다음에 실행할 작업의 컨텍스트를 복원한다.&lt;/li&gt;
&lt;li&gt;CPU가 새로운 작업을 실행한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="코스트"&gt;코스트&lt;/h3&gt;
&lt;p&gt;컨텍스트 스위칭을 할 때, 상태를 저장하고 로드하는 과정에서 메모리 접근, 레지스터 저장, 복원과 같은 작업 때문에 시간과 자원을 사용하게 된다.&lt;/p&gt;</description></item><item><title>OS. Deadlock</title><link>https://kelly-chui.github.io/posts/cs-os-deadlock/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-os-deadlock/</guid><description>&lt;h2 id="데드락"&gt;데드락&lt;/h2&gt;
&lt;img loading="lazy" src="https://kelly-chui.github.io/posts/cs-os-deadlock/image-001.svg"&gt;&lt;p&gt;두 개 이상의 프로세스나 스레드가 서로 상대방이 점유하고 있는 자원을 기다리며, 서로 무한히 기다리는 상태에 빠지는 현상&lt;/p&gt;
&lt;h2 id="데드락의-발생-조건"&gt;데드락의 발생 조건&lt;/h2&gt;
&lt;p&gt;다음 네 가지 Coffman 조건이 동시에 성립할 때 데드락이 발생할 수 있다. 각 조건은 데드락의 필요 조건이지만, 네 조건이 성립한다고 해서 모든 실행에서 반드시 데드락이 발생하는 것은 아니다.&lt;/p&gt;
&lt;h3 id="상호-배제mutual-exclusion"&gt;상호 배제(Mutual Exclusion)&lt;/h3&gt;
&lt;p&gt;한 번에 하나의 작업만 사용할 수 있는 자원이 존재하는 상태다.&lt;/p&gt;
&lt;h3 id="점유-대기hold-and-wait"&gt;점유 대기(Hold and Wait)&lt;/h3&gt;
&lt;p&gt;작업이 하나 이상의 자원을 이미 보유한 상태에서 다른 작업이 가진 추가 자원을 기다리는 상태다.&lt;/p&gt;</description></item><item><title>프로세스와 스레드</title><link>https://kelly-chui.github.io/posts/cs-os-process-thread/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/cs-os-process-thread/</guid><description>&lt;h2 id="프로세스"&gt;프로세스&lt;/h2&gt;
&lt;p&gt;컴퓨터에서 실행 중인 프로그램의 인스턴스, 프로그램이 메모리에 올라가면 프로세스가 된다.&lt;/p&gt;
&lt;h3 id="프로세스의-상태"&gt;프로세스의 상태&lt;/h3&gt;
&lt;p&gt;운영체제마다 세부 상태는 다르지만, 기본적인 5상태 모델은 다음과 같다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;생성(New): 프로세스가 만들어지는 중인 상태&lt;/li&gt;
&lt;li&gt;준비(Ready): 실행에 필요한 자원을 갖추고 CPU 할당을 기다리는 상태&lt;/li&gt;
&lt;li&gt;실행(Running): CPU에서 명령을 실행하고 있는 상태&lt;/li&gt;
&lt;li&gt;대기(Waiting, Blocked): I/O 완료나 이벤트 발생을 기다리는 상태&lt;/li&gt;
&lt;li&gt;종료(Terminated): 실행이 끝난 상태&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;CPU 스케줄러가 준비 상태의 프로세스를 선택하면 실행 상태로 이동한다. 할당 시간이 끝나거나 선점되면 다시 준비 상태가 되고, I/O를 요청하면 대기 상태로 이동한다. 기다리던 작업이 완료되면 다시 준비 상태로 돌아간다.&lt;/p&gt;</description></item></channel></rss>