본문 바로가기

반응형

OS

POSIX 동시성 reference. 캄란 아미니 - 전문가를 위한 C 동시성 또는 다중 작업은 OS 의 커널에서 제공하는 기능이다. 모든 커널이 처음부터 동시적인 것은 아니었지만, 오늘날 대부분은 동시성을 지원한다. UNIX 의 첫 번째 버전은 동시적이지 않았지만 탄생 직후에 이 기능을 갖추게 되었다. POSIX 호환 OS의 동시성은 일반적으로 두 가지 방식으로 제공된다. 동시 프로그램은 멀티 프로세싱(multiprocessing)이라고 하는 서로 다른 프로세스로 실행하거나 멀티스레딩(multithreading) 이라고 하는 동일한 프로세스에 있는 서로 다른 스레드로 실행할 수 있다.  [동시성을 지원하는 커널]- 오늘날 개발되고 유지되는 거의 모든 커널은 다중 작업을 한다. 모든 커널은 실행 중인 여러 프로세스 및 스.. 더보기
동기화3 reference. 캄란 아미니 - 전문가를 위한 C [멀티프로세서 유닛]- 컴퓨터 시스템에 코어가 하나뿐인 CPU 처럼 프로세서 유닛이 하나만 있을 때, 메인 메모리의 특정 주소에 접근하려는 작업들은 주소가 CPU 코어에 캐시되어 있더라도 언제나 최신 값을 읽는다.(단일 코어에선 하나의 프로세서만 존재하므로 모든 프로세스나 스레드가 같은 캐시를 사용하기 때문에 매번 갱신되는 캐시의 내용을 읽음으로써 캐시의 일관성이 유지된다.즉, 멀티 코어 환경에서 한 코어의 데이터를 수정했지만, 다른 코어는 오래된 데이터를 참조하여 잘못된 연산을 수행하는 데이터 불일치 문제나 프로그램 실행 결과가 프로세서의 스케줄링이나 실행 순서에 따라 달라질 수 있어, 예측하기 어려운 결과를 초래하는 결과의 비일관성 문제가 발생하지.. 더보기
동기화2 reference. 캄란 아미니 - 전문가를 위한 C [동시성 문제]- 동시성 문제는 동시성 제어 메커니즘이 없을 때만 존재할 수도 있고, 동시성 제어 기술을 사용해서 발생할 수도 있다. 동시성 제어 메커니즘이 없는 경우 - 서로 다른 인터리빙이 전체 상태를 다르게 만들 때 동시성 문제가 발생한다.(고유한 동시성 문제(intrinsic concurrency) - 제어(동기화) 메커니즘이 없는 동시 시스템에서 발생하는 문제) 전체상태, 인터리빙 간단 설명 -> 동시성 (tistory.com) 고유하다고 하는 이유는 이 문제가 모든 동시 시스템에 본질적으로 존재하기 때문이다. 이 문제는 피할 수 없으며 제어 메커니즘을 이용해 다루어야 한다. 어떤 의미로는 이것이 동시 시스템의 문제라기보다는 동시 시스템의 속.. 더보기
동시성 reference. 캄란 아미니 - 전문가를 위한 C [동시성]- 동시에 실행되는 프로그램 내부에 여러 로직이 있다는 의미로 동시성은 동시에 여러 작업을 처리할 수 있는 프로그램을 작성하는 강력한 도구이다. 동시성은 주로 커널에서 지원한다. 동시성을 논하면 같이 따라오는 것이 '병렬성'이다. 동시성 == 병렬성 으로 생각 할 수도 있는데, 이는 엄연히 다르다고 볼 수 있다. [병렬성]- 동시에 또는 병렬적으로 실행하는 두 작업이 있음을 의미로, 즉 두가지가 동시에 발생한다는 의미이다(동시 시스템은 이에 해당하지 않는다) 이정도로는 사실 뭐가 크게 다른지는 감이 오질않는다.둘의 구분은 두 작업을 실행할 때 '일시 정지'가 발생하냐 안하냐로 받아들이면 이해하는데 도움이 된다. 예를 들어 책을 읽는 것으로 비.. 더보기
프로세스 동기화 [프로세스 동기화]- 동시 다발적으로 실행되는 프로세스들이 서로 협력하여 영향을 주고 받는 과정에서 자원의 일관성을 보장(동기화)해주는 행위(스레드도 포함 가능) [동기화(Synchronization)]- 프로세스들의 수행 시기를 맞추는 것으로 실행 순서를 제어하고, 상호 배제가 있다 실행 순서 제어 - 프로세스를 올바른 순서대로 실행하기  위의 그림에서 Reader 와 Writer 프로세스는 실행의 순서가 있기 때문에 아무렇게나 실행되어선 안된다.Reader 프로세스는 Book.txt 안에 값이 존재해야 읽을 수 있는 조건이 있기 때문에 이 조건이 만족되어야 실행 가능하기 때문이다.즉, Write 로 쓰여 있어야 Reader 로 읽을 수 있다는 것이다.  상호 배제 - 동시에 접근해서는 안되는 자원에 .. 더보기
스레드 [스레드(Thread)]- 프로세스를 구성하는 실행 흐름의 단위로 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. 단일 스레드 프로세스 - 실행 흐림이 하나임 프로세스   멀티 스레드 프로세스 - 실행 흐름이 여러 개인 프로세스로 프로세스를 이루는 여러 명령어를 동시 실행이 가능하다.  [스레드의 구성 요소] - 실행에 필요한 최소한의 정보로 구성된다 스레드 IDPC(프로그램 카운터)를 비롯한 여러 레지스터 값스택 등  프로세스를 이루는 스레드들은 프로세스의 자원을 공유하면서 실행된다.그림처럼 스레드 1, 2, 3 이 병행 실행이 되어도 똑같은 코드, 데이터 영역을 공유하고 있다. 즉 각각의 스레드가 각각의 코드, 데이터 영역을 갖고있지 않다는 얘기다. 이 프로세스가 파일을 열었다면 스레드 1, .. 더보기
프로세스 [프로세스(Process)] - 실행중인 프로그램으로 크게 두 가지 프로세스로 구분 짓는다.  포그라운드 프로세스(foreground process) - 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스(background process) - 사용자가 볼 수 없는 공간에서  실행되는 프로세스 백그라운드 프로세스는 다시 다음과 같이 두 가지로 분류할 수 있다. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 모든 프로세스는 실행되기 위해선 CPU가 필요하다. 그러나 CPU 는 한정되어있기 때문에 프로세스들은 돌아가면 한정된 시간 만큼만 CPU를 이용한다.자신의 차례에 정해진 시간만큼 CPU 를 이용하는데 타이머 인터럽트가 발.. 더보기
입출력 장치 / 장치 컨트롤러 & 장치 드라이버 [입출력 장치] - 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치이다.- 다양한 장치가 존재하며, 장치마다의 속도, 데이터 전송 형식도 저마다 달라서 이렇게 다양한 입출력 장치와 정보를 주고받는 방식을 규격화 하기 어렵다.- 일반적으로 CPU와의 데이터 전송률은 메모리에 비해 낮은 편이다.(속도가 빠른 장치도 있으나, 일반적으론 대게 느린 편이다) [장치 컨트롤러] - 입출력 제어기(I/O controller) | 입출력 모듈(I/O module) 로 불린다.- CPU 와 입출력 장치 간의 통신 중개를 해줌으로써 CPU 와 입출력 장치간의 번역기 역할을 수행한다.- 오류를 검출해줌으로써 입출력 장치에 이상이 없는지를 확인해준다.- 데이터 버퍼링, 즉 전송률이 높은 장치와 낮은 장치 사이에 주.. 더보기

반응형