본문 바로가기

반응형

OS

동시성 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 와 입출력 장치간의 번역기 역할을 수행한다.- 오류를 검출해줌으로써 입출력 장치에 이상이 없는지를 확인해준다.- 데이터 버퍼링, 즉 전송률이 높은 장치와 낮은 장치 사이에 주.. 더보기
보조기억장치 [보조기억장치]- 전원 공급이 없어도 저장된 내용을 유지하는 저장 장치메모리 장치로썬 보조기억장치로 분류하지만, 입출력 장치의 하나로 볼 수도 있다. [하드디스크(HDD, Hard Disk Drive)]- 자기적인 방식으로 데이터를 저장하는 장치로 자기 디스크의 일종이라고도 볼 수 있다.   하드 디스크의 구조는 위와 같이 되어있다. 플래터 - 수많은 N, S 극으로 이루어져 있으며, 데이터들의 실질적인 저장 장소로 여러장을 사용할 수 있고, 일반적으로 양면을 모두 사용한다.플래터를 스핀들 모터가 돌려주면, 액츄에이터의 암에 부착된 헤드가 플래터를 읽어 가는데,이 때, 플래터의 분당 회전수를 RPM(Revolution Per Minute) 으로 표현한다 액츄에이터 암- 동력 장치인 액츄에이터와 플래터를 .. 더보기
캐시 메모리 [저장 장치 계층 구조 (memory hierarchy)]- CPU 와 가까운 저장 장치는 빠르고, 멀리 있는 장치는 느리다.- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다 CPU 가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다 저장장치의 계층 구조는 레지스터메모리USB 로 피라미드 형태로 표현하곤 한다. 레지스터는 메모리보다 용량은 적으나 접근 시간이 제일 빠르고, 가격이 비싸다메모리는 USB보다 용량은 적으나 접근 시간이 빠르고, 가격이 상대적으로 비싸다 낮은 가격대의 대용향 저장 장치를 원한다면 느린 속도는 감수해야 되고, 빠른 속도의 저장 장치를 원한다면 적은 용량과 비싼 가격을 감수해야 된다. 이걸 그림으로 표현하면 다음와 같다 [캐시 메모리]- CPU 와 메모리 사이에.. 더보기
메모리 주소 공간 CPU 와 실행중인 프로그램은 메모리의 모든 내용을 알지 못한다 (몇 번지에 무엇이 저장되어 있는지 다 알 순 없다)이유인즉 메모리에 저장된 값들은 실시간으로 변화하기 때문이다. 새로 실행되는 프로그램은 새롭게 메모리에 적재되고, 실행이 끝난 프로그램은 메모리에서 삭제되며 같은 프로그램을 실행하더라도 실행시마다 적재되는 주소가 달라짐으로 매번 바뀌는 메모리의 상태를 모두 알 순 없다. 이렇게 매번 바뀌는 메모리의 상태를 매 순간 알지 못해도 주소를 활용할 수 있겠끔 하기위해주소를 물리 주소와 논리 주소라는 것으로 나누었다.(이 부분은 가상 메모리 시스템을 같이 알아보면 이해하기가 더 쉬워질 것으로 보인다) [물리 주소]- 메모리 입장에서 바라본 주소- 실제로 정보가 저장되어 있는 하드웨어상의 주소 [논리.. 더보기

반응형