yunki Kim Blog

「Do What You Love」

Chapter5-3 임계구역 해결 방법

임계구역 문제를 해결하는 가장 단순한 방법은 락을 거는 거다. 임계구역 문제를 해결하기 위한 세 가지 조건인 상호 배제, 한정 대기, 진행의 융통성을 모두 만족하는 락, 락 해제, 동기화 구현 방법을 알아보자. 아래 설명에서 다음과 같은 코드를 사용할 예정이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio....

Chapter5-2. 공유 자원과 임계구역

  여러 프로세스가 한정된 자원을 가지고 공동 작업을 하면 여러 문제가 발생할 수 있습니다. 공유 자원의 접근   공유 자원은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 racing condition이 발생할 수 있다. 이런 racing condition이 발생할 수 있...

chapter5-1. 프로세스간 통신.

  프로세스 간 통신은 하나의 컴퓨터에 존재하는 여러 프로세스끼리의 통신과 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신이 있다. 프로세스 간 통신 종류는 다음과 같이 크게 세 종류로 나뉜다. 1. 프로세스 내부 데이터 통신   하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신이다. 프로세스 내부의 스레드는 전...

QUIC protocol

TCP   TCP는 패킷 스위칭을 하는 컴퓨터 커뮤니케이션 네트워크 호스트들 간에 고신뢰성 프로토콜로 사용하기 위해 1970년대에 고안되었습니다. TCP는 HTTP와 같은 application layer protocol들의 기반으로 사용되고 있으며, 현재는 암호화된 데이터를 송수신하기 위해 때로는TLS도 같이 사용하고 있습니다.   ...

개략적인 컴퓨터 구조와 프로그램 동작 과정

  아래와 같이 "Hello world"를 출력하는 간단한 프로그램은 개발 공부를 처음 시작하는 사람이라면 누구나 한 번쯤은 작성해 봤을 겁니다.  1 2 3 4 5 #include <stdio.h>   int main(void) {    &...

Interrupt

  현대의 범용 PC는 한 개 이상의 CPU와 한 개 이상의 디바이스 컨트롤러가 버스를 통해 이어져 있는 형태를 띠고 있습니다. 버스는 컴포넌트들과 shared memory 간의 접근을 제공합니다. 버스는 data control signal을 싣고 다니는 통로입니다. 각 디바이스 컨트롤러는 특정 유형의 장치들을 제어합니다. 디바이스 컨트롤러에...

Chapter3-5. 동적 할당 영역과 시스템 호출

프로세스의 동적 할당 영역   프로세스는 다음과 같은 구조를 가진다.     코드 영역에는 프로그램 본체가 위치한다. 데이터 영역은 프로그램이 사용하려고 정의한 변수와 데이터가 존재한다. 포인터를 제외하면 일반적인 변수는 크기가 결정된다. 따라서 프로세스 실행 직전에 위치와 크기가 결정되기 때문에 정적 할당 영역...

Chapter3-4. 스레드

스레드의 개념 스레드의 정의   프로세스 작업 과정은 다음과 같다.   1. OS가 코드와 데이터를 메모리에 올린다.   2. PCB를 생성한다.   3. 작업에 필요한 메모리 영역을 확보한다.   4. 준비된 프로세스를 준비 큐에 삽입한다.(준비 상태)   5. CPU 스케줄러가 프로세스가 해야 ...

클린 코드가 정답인가?

  며칠 전에 즐겨보던 유튜브 채널인 "포프 티비"에서 "클린 코드 때문에 취업 실패한 썰"이라는 제목의 영상이 하나 올라왔습니다. 이 영상의 주된 내용은 지인이 클린 코드라는 개념에 대해 면접에서 책 "클린 코드"에 대해 많은 거론을 했고 그에 동의하는 것처럼 설명을 해서 탈락했다였습니다. 그러면서 북미 일부 기업은 본인 스스로 올바른 판단...

Chapter3-3. 프로세스의 연산

  프로세스의 생성과 복사를 이해하기 위해선 우선 시스템 프로그래밍을 이해해야 한다. 프로세스의 생성과 복사를 설명하기 전에 우선 프로세스의 구조를 파악하자. 프로세스의 구조   프로세스는 코드 영역, 데이터 영역, 스택 영역으로 구성된다. 데이터 영역은 다신 일반 데이터 영역과 힙 영역으로 구분된다.  영역 종류 설명...