본문 바로가기

CS/운영체제

(7)
[IPC] Inter Process Communication 지난 포스팅에서 프로세스, 스레드의 개념, 그리고 멀티 프로세스와 멀티 스레드의 개념에 대해 정리해 보았다. 멀티 프로세싱은 하나의 프로그램을 여러 개의 프로세스로 나누어 각각의 프로세스가 하나의 작업을 병렬적으로 처리하도록 하는 것이다. 하나의 작업을 하는 각각의 프로세스들은 메모리 공간이 독립되어 있어, 한 프로세스에서 문제가 생기더라도 다른 프로세스에 영향을 미치지 않는다. 그러나 데이터를 주고받거나, 서로 통신하기 위한 작업이 필요한데 이를 IPC(Inter Process Communication)이라고 한다. 오늘은 IPC의 종류와 특징에 대해 정리하려고 한다. 프로세스란 멀티프로세스 VS 멀티 스레드 Inter Process Communication 프로세스는 독립된 실행 객체로 다른 프로세스..
Dead Lock 멀티프로그래밍에서 한정된 자원을 사용하려고 할 때 경쟁(Race Condition)이 발생한다. 프로세스 간 서로의 자원을 차지하기 위해 대기 상태로 들어감으로써 이러한 상황을 Dead Lock 상황이라 볼 수 있다. 책을 참고하였습니다. Dead Lock 교착상태라고도 하며, 두 개 이상의 스레드가 자원을 얻지 못해 서로 상대방의 작업이 끝나기만을 기다리며 더 이상 작업을 진행하지 못하는 상태를 말한다. 서로 다른 프로세스가 공유할 수 없는 자원을 사용할 때 발생 Dead Lock 발생조건 Dead Lock은 아래 4가지 조건을 모두 만족하면 발생한다. 이 중 하나라도 충족하지 않으면 Dead Lock은 발생하지 않는다. 1. Mutual Exclusion (상호 배제) 한 프로세스가 사용하는 자원은 ..
동기화 문제의 해결 멀티프로그래밍 작업을 할 때 프로세스는 독립적으로 작업을 하거나, 공유된 자원을 활용하여 공동작업을 하기도 한다. 멀티 프로세싱은 IPC(프로세스 간 통신방법)를 통해 자원을 공유하고, 멀티스레딩의 스레드들은 프로세스의 메모리 영역(코드, 데이터, 힙)을 공유하며 공동 작업을 한다. 자원 공유를 통해 응답성과 경제성을 높일 수 있지만 이에 따른 문제도 발생할 수 있다. 공유 자원을 동시에 여러 스레드가 접근한다면 어떤 문제가 일어날까? 2개 이상의 스레드가 공유 자원에 접근할 경우 그곳의 데이터는 온전하지 않을 수 있다. 따라서 Critical Section을 설정하여 두 개 이상의 스레드가 동시 접근을 할 수 없도록 막아야 한다. 이와 같은 동기화 문제의 해결 방법에 대해 알아보자. 책을 참고하였습니다..
Multi-Process VS Multi-Thread 이전까지 프로세스와 스레드에 대해 알아보았다. 운영체제 입장에서 작업의 단위는 프로세스이고 CPU 입장에서의 작업 단위는 스레드이다. 이번 포스팅을 통해 멀티 프로세스와 멀티 스레드의 기능 및 차이점을 알아보고, 관련 용어들을 알아보려고 한다. 책을 참고하였습니다. 용어정리 1. 멀티 프로그래밍 컴퓨터 시스템에서 실행 또는 대기 중인 프로세스들이 있다. 이들은 차례를 기다리며 CPU를 할당받고 처리가 되어진다. 시분할(Time-Sharing)에 의해 차례가 종료되어 다시 Ready Queue에 들어가거나, I/O 작업 처리가 필요해 Block(Waiting) Queue에 들어가기도 한다. 이처럼 운영체제는 여러 작업들을 빠르게 처리하며 CPU가 낭비되지 않도록 적절히 Context Switching을 하..
Thread란 지난 process의 정리에 이어서 스레드에 대해 정리해보려고 한다. 프로세스는 실행 중인 프로그램으로, 원초적으로 단일 스레드 프로세스를 말한다. 프로세스와 프로세스끼리는 약하게 연결이 돼있지만, 스레드와 스레드 사이에는 메모리를 공유하기 때문에 강하게 연결되어 있다. 예전에는 스레드라는 개념이 없었다. 프로세스의 개념만 존재했고, 단일 스레드를 가진 프로세스이므로 굳이 스레드라는 용어 자체가 필요하지 않았다. 하지만 오늘날 기술의 발전으로 인해 다중 코어를 가진 CPU가 생겨나 스레드를 생성해 멀티 쓰레딩 작업이 가능해지면서 시스템의 효율을 높일 수 있었다. 책을 참고하였습니다. Thread 위 그림처럼 하나의 프로세스는 여러 개의 쓰레드로 구성될 수 있고, 프로세스 내의 스레드는 서로 강하게 연결되..
Process란 OS에서 프로세스는 하나의 작업 단위를 말한다. 사용자가 프로그램을 실행하면 HDD 또는 SDD 저장장치에서 프로그램 코드를 메모리로 가져오게 되면서(Fetch) 하나의 작업이 생성된다. 이러한 작업들은 CPU를 할당받아 처리되어진다. 프로그램은 명령어, 코드 및 정적 데이터들의 묶음이라 보면 된다. Process 실행 중인 프로그램을 말하며, 원초적으로는 하나의 쓰레드만을 가지고 있는 단일 스레드 프로세스를 의미한다. 프로세스가 생성되는 과정 1. 사용자에 의해 프로그램이 실행되어진다. 2. 프로그램 실행에 필요한 코드와 자원들을 메모리로 옮긴다(Fetch). 3. 해당 프로세스의 정보를 가지고 있는 PCB(Process Control Block)가 같이 생성된다. 4. 해당 프로세스는 준비 큐에 들어..
OSI 7 Layer와 TCP/IP 4 Layer OSI 7 계층과 TCP/IP 4 계층은 네트워크의 기본 계층 구조이다. TCP/IP 모델은 인터넷의 개발 이후 표준화되어 실질적인 통신에 쓰이고 있다. 즉, OSI 모델은 이론적으로 많이 활용이 된다. 일반적으로 하위계층은 하드웨어를 통해서 구현되었고, 상위 모델은 운영체제의 커널에 소프트웨어적으로 구현되었다. OSI 7 Layer 국제 표준기구(ISO)에서 표준화된 네트워크 구조를 제시한 기본 모델 통신 기능 7개의 계층으로 분할하여 각 계층마다 다른 계층과는 무관하게 자신의 독립적인 기능을 지원하도록 함 기술의 동작 원리나 분석할 때 많이 쓰임 1. Physical Layer (물리 계층) 하드웨어로 구성되어 있음 -> 전자회로 전기적 기계적 특성을 이용해서 통신 케이블로 데이터 전송 Bit(0, ..