본문 바로가기

Computer Science/Operating System

(4)
클라이언트 서버 시스템에서 프로세스 간 통신 방법 Interprocess communication의 방법으로 살펴본 message passing system과 shared memory system은 프로세스 간 통신 뿐만 아니라 client-server system을 포함한 다른 시스템에서도 사용할 수가 있다. 한편, 이번 포스트를 통해서 살펴볼 방법들은 client-server system에서 주로 활용되는 프로세스 간 통신 방법이다. 클라이언트-서버 통신에는 클라이언트와 서버라는 두 구성요소가 포함되며 클라이언트는 서버에 요청을 보내고 서버는 클라이언트의 요청에 응답하는 형태를 띈다. 1. 소켓(Sockets) 소켓은 클라이언트-서버 시스템에서 통신을 위해서 사용되는 전략 중 하나로, 통신을 위한 endpoint로 정의된다. 따라서 네트워크를 통해서..
프로세스 간 통신 Part2 지난 포스트에서 다루었던 communication link의 논리적 구현 방법 중 하나인 direct/indirect communication에 이어서 이번 포스트에서는 남은 synchronous/asynchronous communication과 automatic/explicit buffering을 다룬다. 그리고 2가지의 논리적 구현 방법은 각각 동기화에 대한 이슈와 버퍼링에 대한 이슈가 있다. 1. Synchronization Message Passing System에서 프로세스 간 통신은 커널에 send()와 receive() 동작에 대한 호출을 통해서 이루어진다. 그리고 프로세스가 이러한 동작을 하려고 할 때 그 동작이 차단(block)된다면 사용하려는 리소스에 접근할 수 있게 되거나 I/O 작업..
프로세스 간 통신 Part1 1. 개요 프로세스는 독립적인 주소 공간을 가지기 때문에 원칙적으로는 다른 프로세스의 주소 공간을 참조하는 것이 불가능하다. 따라서 운영체제에서는 서로 다른 프로세스들이 데이터를 주고 받을 수 있도록 프로세스 간의 자원 접근을 위한 매커니즘인 프로세스 간 통신(IPC, Inter-Process Communication)을 제공한다. 그리고 이 IPC 방식은 공유메모리 모델과 메시지 전달 모델 2가지 모델로 나누어 볼 수 있다. 공유 메모리 모델은 프로세스들이 주소 공간의 일부를 공유하고 해당 영역에 읽기/쓰기 작업을 통해서 통신한다. 그리고 메시지 전달 모델은 커널을 통해서 send와 receive 연산을 통해 데이터를 전송한다. 1.1. 공유 메모리 모델 개요 위의 이미지를 보면 서로 통신을 하려는 프..
프로세스와 쓰레드 1. 개요 운영체제 과목 수업을 들을 때 전체 내용에서 빠짐없이 등장하는 중요한 키워드를 골라보라고 한다면 프로세스와 쓰레드를 고를 수 있을 것 같다. 이번 포스트에서는 프로그램 실행을 제어하는 기본 개념임과 동시에 프로그램이 여러 작업을 동시에 실행할 수 있도록 허용하는 역할을 담당하는 프로세스와 쓰레드에 대해서 정리해보려고 한다. 2. 프로세스 노션이나 카카오톡과 같이 우리가 컴퓨터에 어떠한 프로그램을 설치할 때를 떠올려 보면 .exe라는 확장자가 붙은 파일을 항상 마주하게 된다. 이처럼 프로그램은 .exe와 같은 확장자를 가진 하나의 실행파일로 컴퓨터의 저장매체(하드디스크, SSD 등)에 존재하고 있다. 이 프로그램이 메모리에 올려지고, CPU에 의해 실행되는 것이 바로 프로세스이다. 즉, 프로그램..