Mutual Exclusion: Hardware Support Interrupt Disabling (인터럽트 금지) 단일처리기에서 병행 처리되는 프로세스들은 오버래핑되는 것이 아닌 인터리빙된다.즉, 실제로 동시에 수행되는 것이 아니라 프로세서를 번갈아 가며 실행한다. 또한 프로세스는 운영체제 서비스를 호출하거나 인터럽트될 때까지 계속 실행하게 된다. 인터럽트가 발생하지 않으면 그 동안은 한 프로세스의 계속적인 실행을 보장할 수 있다. 임계 영역에서는 인터럽트가 발생할 수 없기 때문에 상호 배제가 보장된다. - 수행 효율이 감소된다.- 멀티프로세서 시스템에서는 상호 배제를 보장할 수 없다. Special Machine Instructions (특별한 기계 명령어)이 명령어가 수행되는 동안에는 같은 ..
전체 글
운영체제 설계의 핵심 3가지 주제 Multiprogramming(멀티프로그래밍) - 단일 처리 시스템 상에서 다수의 프로그램 관리 Multiprocessing(멀티프로세싱) - 멀티프로세서 시스템 상에서 다수의 프로세스 관리 Distributed processing(분산 처리) - 다수의 분산된 컴퓨터 시스템 상에서 수행되는 다수의 프로세스 관리 ㅡ> Concurrency(병행성) 문제가 발생 Concurrency Issues - 프로세스 간 통신 - 자원에 대한 공유와 경쟁 - 프로세스들의 동기화 - 프로세스에 대한 시간 할당 Concurrency Terms 먼저 3가지 용어에 대해 알아보자. Atomic Operation (원자적 연산) - 함수 또는 액션으로 더이상 분할할 수 없는 단위 Critic..
Process Creation 프로세스 관련 System calls - fork : 프로세스 생성 - exec : 기억장소에 새로운 프로그램으로 대치 - wait : 동기화 관련 - exit : 프로세스 종료 Fork 함수와 Exec 함수 프로세스의 생성 (fork) - 호출한 프로세스와 동일한 프로세스를 새로 생성하여 새로운 프로세스 ID할당 - 부모(parent) 프로세스 : fork를 호출한 프로세스 - 자식(child) 프로세스 : fork에 의해 생성되는 프로세스 프로그램의 실행 (exec) - 호출한 프로세스를 새로운 프로세스로 변경한다. - 호출 후의 프로세스 ID는 변하지 않는다. - 새로운 프로그램의 내용이 실행된다. 프로세스의 생성 (Fork) 1. 새로운 프로세스를 생성 - 부모(pa..
Node and Link 데이터 링크 계층에서의 통신은 node-to-node라고 한다. 데이터는 한 지점에서 다른 한 지점까지 많은 네트워크 (LANs and WANs)를 통하여 도달한다. 또한 이 네트워크들은 라우터에의해 연결되어 있다. 데이터는 node를 연결해주는 link를 통해 전송된다. 데이터 링크 계층은 Physical Layer(물리 계층)와 Network Layer(네트워크 계층)사이에 껴있다. 데이터 링크 계층은 물리 계층으로 부터 데이터를 받아 네트워크 계층에게 service를 제공한다. Error Control 먼저 오류의 종류에는 크기에 따라 두가지로 나뉜다. - Single-bit error 데이터 중 하나의 비트가 값이 바뀐 것 바뀐 비트를 Corrupted bit라 부른다. ..
Digital-to-Analog Conversion 보내는 쪽은 디지털 데이터를 가지고 있고 변조(Modulation)을 통해 아날로그 신호로 바꿔서 전달한다. 받는 쪽은 아날로그 신호를 역변조(Demodulation)을 통해 디지털 신호로 바꿔서 디지털 데이터를 수신한다. 1. Bandwidth (대역폭) 디지털 데이터를 아날로그 신호로 전달하기 위해 필요한 대역폭은 Signal rate에 비례한다. *Signal rate: 1초에 몇개의 신호를 전달할 수 있는가 2. Carrier signal (반송파) 장치에서 보내는 아날로그 신호의 기반으로 작용하는 신호 Binary ASK (BASK) Binary Amplitude Shift Keying으로 Carrier signal의 진폭에 변화를 줘서 신호를..
유클리드 호제법 유클리드 호제법은 두 수의 최대 공약수를 구하는 알고리즘이다. 일반적으로 최대 공약수를 구하는 방법은 소인수분해를 이용한 공통된 소수들의 곱으로 표현할 수 있지만 유클리드 호제법은 좀 더 간단한 방법을 제시한다. 유클리드 호제법의 핵심이론 유클리드 호제법을 수행하려면 먼저 MOD 연산을 이해하고 있어야한다. MOD연산이 최대 공약수를 구하는 데 핵심 연산이기 때문이다. MOD 연산으로 구현하는 유클리드 호제법 1. 큰 수를 작은 수로 나누는 MOD 연산을 수행한다. 2. 앞 단계에서의 작은 수와 MOD 연산 결괏값(나머지)으로 MOD 연산을 수행한다. 3. 나머지가 0이 되는 순간의 작은 수를 최대 공약수로 선택한다. 예제 1 https://www.acmicpc.net/problem/19..
Processes and Threads 프로세스는 두 가지의 특성을 가진다. - Resource ownership (프로세스가 메인 메모리에 있을때) 프로세스 이미지를 위한 가상 주소 공간을 포함한다. 자원 소유권의 단위는 프로세스(process)나 태스크(task) 라고 한다. - Scheduling / execution (실행의 단위로써 프로세스가 존재) 한 프로세스는 다른 프로세스들과 번갈아가면서 수행될 수 있다. 디스패칭 단위는 쓰레드(thread) 또는 경량 프로세스(lightweight process)라고 불린다. *디스패치 : 한 프로세스로 부터 다른 프로세스로 교체(switch) 하는 과정 Multithreading(멀티 쓰레딩) 운영체제가 하나의 프로세스 내에서 수행되는 여러개의 쓰레드를..
Digital-to-Digital Conversion 디지털 신호를 사용하여 디지털 신호를 나타내는 방법에는 두가지 방법이 있다. - Line coding Line coding은 항상 필요하다. - Block coding 필요할수도 필요하지 않을수도 있다. Line Coding - 디지털 신호를 일련의 비트로 바꿈. - 송신하는 곳에서 디지털 데이터가 디지털 신호로 인코딩되고, 수신하는 곳에서 디코딩하며 디지털 데이터를 생성함 r은 각 신호 요소에서 데이터의 수 이다. (data element / signal element) Line Coding에서의 문제 1. DC Components A. constant voltage level이 상수이면 스펙트럼은 매우 낮은 진동수를 생성한다. 이 진동수가 0을 가..
데이터는 아날로그이거나 디지털이다. 아날로그 데이터는 연속적인 정보이고 디지털 데이터는 이산적인 데이터이다. 예를 들어, 아날로그 시계는 시간,분,초침이 연속적인 형태로 정보를 준다. 반대로 디지털 시계는 8:05분에서 8:06분으로 바뀔때처럼 시간과 분이 갑자기 바뀐다. Analog Signal 아날로그 신호는 단순(simple)하거나 복합적인(composite) 신호들로 구성된다. Sign Wave 주기적 신호는 여러개의 sine waves로 이루어져있다. sine waves란 모든 아날로그 신호의 기본이되는 형태다. 1초에 12번 진동한다하고면 주기는 진동수에 반비례하므로 1/12초가 된다. 1초에 6번 진동한다고하면 주기는 1/6초가 된다. 예를 들어, 우리 가정에서 사용하는 전력의 진동수는 60..
소수 구하기의 핵심이론 대표적인 판별법으로는 에라토스테네스의 체를 들 수 있다. 에라토스테네스의 체란? 구하고자 하는 소수의 범위만큼 1차원 배열을 생성한다. 2부터 시작하고 현재 숫자가 지워지지 않을 때는 현재 선택된 숫자의 배수에 해당하는 수를 배열에서 끝까지 탐색하면서 지운다. 이때 처음으로 선택된 숫자는 지우지 않는다. 배열의 끝까지 2를 반복한 후 배열에서 남아 있는 모든 수를 출력한다. 에라토스테네스의 체를 사용할 때 시간 복잡도는? 일반적으로 에라토스테네스의 체를 구현하려면 이중 for문을 이용하므로 시간 복잡도가 O(N²) 라고 판단 할 수 있다. 하지만 실제 시간 복잡도는 최적화의 정도에 따라 다르지만, 일반적으로 O(Nlog(logN))이다. 그 이유는 배수를 삭제하는 연산으로 실제 구..