728x90
반응형
SMALL

Computer Science/시스템 프로그래밍 12

Chapter 14. Critical Sections and Semaphores

중요한 부분 (Critical Sections) 정의: 상호 배타적으로 실행되어야 하는 코드 세그먼트, 공유 장치는 한 번에 하나의 프로세스만 액세스할 수 있으므로 이를 배타적 자원이라고 부름 예제 (Program 14.1): (1) 프로세스 체인(원래 프로세스가 자식 프로세스를 만들고, 부모 프로세스를 삭제 이 과정을 반복)을 생성하고 메시지를 한 번에 한 문자씩 출력 각 문자를 출력한 후의 지연 시간을 명령줄 인수로 제공 지연 시간이 0에 가까우면 각 프로세스는 일반적으로 전체 줄을 출력, 지연 시간이 충분히 크면 각 프로세스는 CPU를 잃기 전에 한 번에 한 문자씩만 출력 -> 딜레이 값이 작으면 프로세스가 종료되기 전 전부 출력, 딜레이 값이 크면 프로세스를 ..

Chapter 13. 스레드 동기화

MutexMutex는 "mutual exclusion(상호 배제) - 스레드 간의 발생할 수 있는 충돌 문제(전역변수를 선언하여 공유 변수로 선언하였어도 1번에 1개의 스레드만 작동하게끔 os에서 막아줌, 다른 스레드는 기다리게됨!"의 약자Mutex 변수는 스레드 동기화를 구현하고, 여러 번의 쓰기 작업이 발생할 때 공유 데이터를 보호하는 주요 수단 중 하나Mutex 변수는 공유 데이터 리소스에 대한 접근을 보호하는 "잠금(lock)"과 같은 역할을 합니다. Mutex의 기본 개념단 하나의 스레드만이 주어진 시점에 Mutex 변수를 잠그거나 소유할 수 있음, 나머지 스레드는 waiting queue에 들어가서 대기함따라서 여러 스레드가 Mutex를 잠그려고 시도하더라도 단 하나의 스레드만 성공할 수 있음..

Chapter 12. POSIX Threads

Motivation{파일 디스크립터 모니터링} - concurrent하게 실행되는 스레드 예시기본적으로 프로그램을 컴파일하여 프로그램을 실행하면 프로세스가 만들어지고 프로세스는 기본값으로 1개 이상의 스레드가 반드시 생성됨 -> 스레드가 실행 컨텍스트 정보를 가지고 있음 [프로세스] a와 b라는 프로그램을 생성하여 각각 따로 실행하면 빠르게 스위치해가면서 2개의 프로세스가 동시에 실행되는 것처럼 실행됨 => [스레드]  한 프로세스 내부에 a라는 스레드와 b라는 스레드가 실행되는 동안 스레드 간의 스위치가 되어 concurrent하게 진행됨별도 프로세스 : 자식 프로세스는 어떤 변수도 공유하지 않음select(), poll() : 블로킹 호출 - 싱글 스레드 기반으로 서버를 구축하는 방법, 타이머를 설정..

시스템 프로그래밍 chapter09. (타임과 타이머)

POSIX 시간모든 컴퓨터 시스템은 내부적으로 Epoch(시작 시점) 이후의 초 단위로 시간을 유지해야 한다.Epoch은 1970년 1월 1일 00:00(자정)부터 시작하여 지금 시간까지 몇 초가 흘렀는지 알아내기 위하여 time()함수를 사용, 협정 세계시(UTC, 그리니치 표준시 또는 GMT)로 정의된다.POSIX는 구현이 시스템 시간을 실제 시간 및 날짜에 어떻게 맞춰야 하는지에 대해 명시하지 않습니다.초 단위 시간(Time in seconds)#include time_t time(time_t *tloc);시스템 시간을 가져옴(Epoch 시점부터 지금까지의 시간을 초 단위로 반환하여 표현됨)매개변수(Parameters)tloc: NULL이 아니면, 함수는 시간을 *tloc에 저장time_t: lon..

시스템 프로그래밍 chapter08. (신호)

기본 신호 개념신호(Signal)의 정의: 소프트웨어가 특정 이벤트를 프로세스에 알리는 방법신호의 수명: 생성 시점(이벤트 발생시점)과 전달 시점 사이의 기간 (시그널은 해당 이벤트가 발생하면 생성되고 타켓 프로세스에게 전달되고 프로세스가 시그널을 받으면 Delivery된 것! / 수신한 시그널을 전송 완료하면 종료됨), 항상 시그널이 타겟 프로세스에게 전달되는 것은 아님!대기 중인 신호: 신호가 생성되었지만 전달되지 않은 신호를 (pending signal) -> pending signal은 바로 삭제되는 것이 아니라 pending signal list에 대기하여 이후 전달 가능 상태가 되면 다시 리스트에서 빠져나와 전달됨!신호 처리: 신호가 전달될 때 프로세스가 신호 처리기를 실행하면 신호를 잡게 됩..

시스템 프로그래밍 chapter 06. (UNIX 스페셜 파일)

파이프 (Pipe)가장 간단한 UNIX 프로세스 간 통신 방식은 파이프(pipe) [데이터가 흐르는 통로]이다. 이는 특별한 파일로 표현됨파이프는 프로세스 간 통신 메커니즘으로, 동일한 시스템에서 실행 중인 프로세스들이 정보를 공유하여 협력할 수 있도록 해줍니다. (데이터를 저장할 때 write() 사용, 데이터를 읽어들일 때 read() 사용)#include int pipe(int fd[2]);pipe() 시스템 호출은 파이프(pipe)라 불리는 입출력 메커니즘을 생성하며, 2 개의 파일 디스크립터인 fd[0]과 fd[1]을 반환한다. [읽기용, 쓰기용으로 구분되기에 배열이 2개인 것]fd[0]은 읽기(reading)를 위해 열리고, read[fd[1])  fd[1]은 쓰기(writing)를 위해 열린..

시스템 프로그래밍 chapter 05. (파일과 디렉토리)

Files and Directories파일과 디렉토리OS는 물리적 디스크를 파일 시스템으로 조직화합니다. =>   디렉터리와 파일들이 모여 파일 시스템을 구성 파일 시스템 :파일 시스템은 위치와 이름과 같은 속성들을 가진 파일들의 모음파일의 물리적 위치를 지정하는 대신, 응용 프로그램은 파일명과 오프셋을 지정합니다.(출제가능)디렉토리 :디렉토리는 디렉토리 항목(directory entries => 파일명과 오프셋을 가진 집합)을 포함한 파일로, 파일명과 파일의 물리적 위치를 디스크 상에서 연결합니다.대부분의 파일 시스템은 디렉터리를 트리 구조로 조직화합니다./(루트 디렉터리) 하위에 dirC, dirA(서브(하위) 디렉터리)가 존재 그 하위에는 파일인 my3.dat를 가리킴같은 이름의 파일이 다른 디렉터..

시스템 프로그래밍 chapter 04.

UNIX I/O(Input & Output)목표장치에 독립적인 입출력의 기본 개념을 학습한다.읽기(read)와 쓰기(write)를 실험한다.여러 파일 디스크립터를 모니터링하는 방법을 탐구한다.올바른 오류 처리를 사용한다.파일 디스크립터의 상속을 이해한다.{장치 용어}- 주변 장치 : 컴퓨터 시스템에서 접근하는 하드웨어 장치(입출력 장치) ex) 디스크, 테이프, CD-ROM,화면,키보드,프린터,마우스 장치 및 네트워크 인터페이스- 장치 드라이버 : 사용자 프로그램이 시스템 호출을 통해 운영체제 모듈에 접근하여 장치들에 대한 제어 및 입출력을 수행장치 드라이버는 장치 작동의 세부 사항을 숨기고, 장치를 비인가 사용으로부터 보호함- UNIX는 대부분의 장치에 5가지 함수를 통해 일관된 접근을 제공하여 장치 ..

시스템 프로그래밍 chapter 03.

Process in UNIX 프로세스를 생성하는 방법을 배우기fork와 exec 함수에 대해 실험하기프로세스 상속의 의미를 탐구하기wait 함수를 사용하여 프로세스 정리를 수행하기UNIX 프로세스 모델 이해하기Process (프로세스)- 프로세스는 대부분의 운영 체제 모델에서 기본적인 실행단위이고 실행 중인 프로그램을 의미- CPU는 실행 준비된 프로세스들 사이에서 공유되며, 한 번에 하나의 프로세스만 실행되고 CPU는 프로세스 간 context switch (문맥 전환)을 통해 빠르게 전환되며 시스템 호출(system call)을 사용하여 운영체제와 통신함- 프로세스는 언제든지 장치 인터럽트 및 시스템 호출에 의해 중단가능하며 프로세스 제어 블록(PCB) 또는 프로세스 설명자 라는 데이터 구조로 표현됨..

시스템 프로그래밍 chapter 02.

프로그램, 프로세스, 스레드목표는 다음과 같습니다:프로그램, 프로세스, 스레드에 대해 배우기메모리 할당 및 조작 실험정적 객체의 의미 탐구환경 변수를 문맥에 맞게 사용하기프로그램 구조와 레이아웃 이해 Program (프로그램)- 정의된 작업을 수행하기 위해 준비된 일련의 명령어, 컴파일러가 각 소스 파일을 오브젝트 파일로 변환하고, 필요한 라이브러리와 함께 실행 가능한 모듈을 생성Process (프로세스)- 프로세스는 실행 중인 프로그램의 인스턴스를 말하며 바로 실행되는 것이 아닌 Ready Queue에서 대기하다가 os가 실행할 프로세스를 선택하면 레디 큐에서 나와 cpu와 함께 실행됨, 프로세스는 주소 공간을 가지며 적어도 1개의 제어 흐름을 가진 스레드가 존재함- 운영체제가 적절한 정보(프로세스 I..

728x90
반응형
LIST