전체 글

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))이다. 그 이유는 배수를 삭제하는 연산으로 실제 구..
Process Control Modes of Execution (실행 모드) - User mode(사용자 모드) 운영체제 서비스를 제공받을 수 없는 실행 모드 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없다. - kernel mode(커널 모드) 운영체제 서비스를 제공받을 수 있는 실행 모드 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있음. 커널 모드의 기능들 두 개의 모드를 나누어 사용하는 이유 - OS 와 OS tables를 보호하기 위해서다. 즉, 응용 프로그램들이 CPU, 메모리, 하드 디스크 등에 마음대로 접근하고 조작할 수 있다면 자원이 무질서하게 관리될 것이고, 응용 프로그램이 조금만 실수해도 컴퓨터..
ArgumentResolver HandlerMethodArgumentResolver Spring MVC에서 컨트롤러 메서드의 각 파라미터가 어떻게 해석되어야 할지 결정하는 전략을 제공하는 인터페이스 즉, HTTP 요청과 관련된 데이터를 어떤 방식으로 컨트롤러 메서드의 인자로 전달할지 결정하는 역할을 함 -> (@RequestParam, @PathVariable 등) 으로 처리할 수 없는, 더 복잡하거나 특수한 요구사항을 가진 파라미터 바인딩을 구현할 수 있다. ArgumentResolver - HandlerMethodArgumentResolver의 구현체를 지칭하는 말 HandlerMethodArgumentResolver 인터페이스는 주로 두 가지 메소드를 정의한다. 핵심메소드 supportsParame..