목록전체 글 (111)
Shine's dev log
앞서 살펴보았던 기본적인 스케줄링 방법 이외에 한단계 더 심화된 스케줄링 방법에 대하여 알아보자. 오늘 알아볼 스케줄링 방법은 크게 두가지인데, 1)Proportional Share scheduling과 2) Real-time System의 스케줄링이다. 1. Proportional Share Scheduling 각 프로세스가 전체 Time share 중에 몇 퍼센트정도 가질지 결정하는 스케줄링 기법. 전체 CPU실행시간을 Time share라는 단위로 쪼갠 뒤, 각 프로세스에게 일정 퍼센트만큼 할당해주는 방법이라고 생각하면 된다. 전체 Time share을 T라고 했을 때, 각 프로세스는 N만큼의 시간을 할당받는다. (N 두가지 예시를 살펴보자. 예1) MQ에서 큐 끼..
1. CAN 프로토콜이란? CAN은 (Controller Area Network) 차량내에서 호스트 컴퓨터 없이 컨트롤러나 장치들끼리 통신하기 위해서 만들어진 표준 통신 규격 이다. 즉 CAN은 위의 그림과 같이 하나의 큰 버스 네트워크를 이용한다. 차량의 ECU들은 CAN 프로토콜을 사용하여 통신을 하는데, 최근에는 차량 뿐 아니라 다양한 분야에서 이용되기도 한다. 2. CAN의 특징 1) 메시지 지향성 (Message-oriented protocol) 메시지 지향성이란, 쉽게말하면, A라는 장치가 메시지를 보낼 때 목적지를 명확히 밝히고 보내는 것이 아니라 일단 보내는것이다. 이렇게 뿌려진 메시지들은, 받는 노드들이 각자 판단하여 필요하면 메시지를 받고, 아니면 그냥 흘려보내는 식으로 동작하는 것이다..
앞서 살펴본 DES는 컴퓨팅 파워가 증대되면서 더이상 안전하지 않은 암호시스템이 되었다. 이에 더 강력한 암호시스템을 만들고자 NIST (미국 국립 표준 연구소)에서 공모하였다. 그 결과 Rijndael 알고리즘이 채택 되었고, 그렇게 AES가 탄생하게 되었다. 1. AES (Advanced Encryption Standard) 기본정보 - 128비트 블록사용 - 128, 192, 256 비트 키 사용 (사용하는 키의 길이에 따라 라운드횟수가 다름 : 10, 12, 14) - SPN 구조이다 (Feistel 아님) - DES 보다 6배나 빠르다. 2. AES의 구조 즉, 간단하게 말하면, 처음 입력값을 1) Initial transformations 하고, 2) N번의 라운드를 진행하는것이다. State..
이때까지 프로세스 스케줄링에 대한 이론적인 개념을 배워보았다면, 오늘은 실제로 스케줄러에 적용되는 알고리즘을 하나씩 살펴보자. 1. FCFS / FIFO First-Come, First-Served 이름에서 알 수 있듯이 큐에 들어온 순서대로 실행시켜주는 것이다. 일반적으로 Non-preemptive 하다. 또한, 아무리 앞의 프로세스의 실행시간이 길다고 하더라도 어쨌든 모든 프로세스에게 순서가 돌아가므로 starvation도 없다. 이 알고리즘의 문제로는 convey effect가 있는데, 한마디로 굉장히 실행시간이 긴 프로세스가 앞에 있으면, 뒤에 있는 프로세스들의 turnaround time 이 길어진다는 것이다. 위의 그림에서 첫번째 경우가 대표적인 convoy ..
1. DES DES(Data Encryption Standard)는 Feistel 암호로 널리 사용되던 암호중에 하나였다. DES 대칭키 암호이고, 블록암호이다. DES의 과정을 대략적으로 살펴보면, 다음과 같은 세 단계를 거친다. 1) Initial permutaion 2) 16번의 라운드함수 3) Final permutaion 중요한 특징은 56비트 키를 이용한다는것과 매 라운드마다 48비트 키를 사용한다는 것이다. 그렇다면 암호화 과정을 한단계씩 자세히 살펴보자. 2. Initial, Final permutation 처음 64비트 평문이 들어왔을때와 마지막 64비트 암호문이 생성되기 직전에 수행되는 permutation 과정이다. 즉 straight P-box를 사용한다. 이 때, initial P..
암호화와 복호화때 같은 키를 사용하는 대칭키 암호화 방식에서, 다루는 데이터를 다루는 단위에 따라 블록암호와 스트림암호로 나눌 수 있다. 1. 블록암호(Block cipher)와 스트림암호(Stream cipher) 블록암호 - 평문을 블록단위로 나누어서 암호화하는 방식 - Feistel 암호와 SPN 암호로 나뉘어짐 - Feistel 암호 : DES, SPN 암호 : AES, ARIA 스트림암호 - 평문을 문자마다 바로바로 암호화하는 방식 - RC4 등이 있다. 2. Feistel 방식 (블록암호) Feistel 방식을 그림으로 나타내보면 아래와 같다. 1) 암호화할 블록을 반으로 잘라 L bits와 R bits로 나눈다. 2) R bits를 다음 라운드의 L bits로 그대로 보낸다. 3) R bit..