목록전체 글 (111)
Shine's dev log

0. evict page demand paging을 사용하면, 메인 메모리로 페이지를 가져와야 하는데 그러면 원래 메인 메모리에 박혀있는 페이지 하나를 뽑아줘야 한다. 이 때, 뽑을 페이지를 고르는 것도 전략적으로 골라야 컴퓨터 성능이 좋아지는데, 왜냐면 page fault가 나서 디스크를 참조하는 경우 시간이 엄~청 오래걸리기 때문이다. 전략적으로 evict할 page를 잘 골라서 최대한 page fault가 나지 않도록 하는 것이 중요하다. 지금부터 evict할 page를 고르는 여러가지 알고리즘들을 살펴보자 1. OPT (Belady's Algorithm) 앞으로 가장 오랫동안 사용되지 않을 페이지를 빼는 알고리즘 이는 수학적으로 증명된, 가장 page fault r..

1. ECC(Elliptic Curve Cryptography)란? 타원 곡선 암호(ECC)는 공개키 암호 알고리즘이며, RSA와 같은 다른 공개키 암호에 비해 짧은 키를 사용한다는 것이 특징이다. 대표적으로 비트코인 시스템이나 ad-hoc 무선 인터넷 환경, 모바일 네트워크 환경에서 자주 이용된다. 짧은 키를 사용하기 때문에 1) 긴 키를 계산할 수 없는 조건일 때 2) 빠른 속도가 필요할 때 3) 서명, 검증, 인증이 필요할 때 사용한다. 2. ECC의 원리 타원곡선은 E : y^2 = x^3 ~ 의 형태로 나타낼 수 있다. (y에대한 3차식, x에 대한 2차식) 위의 곡선을 지나는 직선이 있다고 할 때, 지나는 점 P Q -R이 있다고 가정해보자. 이 경우, R = P + Q 이라고 정의한다. (여..

앞서 살펴보았던 Virtual memory system은 여러가지 장점들이 있기 때문에 대부분의 OS에서 사용하는 개념이다. 이번에는, Virtual memory와 관련된 여러가지 특징들을 살펴보자. 1. address space 와 VM 우선 address space는 크게 code, stack, heap, data 영역으로 나눌 수 있다. 1) code code 영역은 read-only로 page table에 mapping된다. 또한, sharable 하다는 특징이 있다. 디스크로부터 file의 내용이 변화없이 읽어져 와서 따로 변화를 백업해 둘 swap file을 만들지 않아도 되는 놈을 file-backed pages라고 하는데, code 영역이 executable f..

1. RSA의 탄생 RSA 암호는 Ron Rivst, Adi Shamir, Leonard 라는 세 사람이 1977년 고안해낸 암호 알고리즘이다. 비교적 최근에 만들어진 알고리즘이고 그 안전성 또한 뛰어나서 지금까지도 공개키 암/복호화 환경에서 널리 쓰이고 있다. 앞서 알아보았던 Diffie-Hellman 공개키 암호를 기반으로 만들어졌기 때문에, 방식이 꽤나 유사하다. 지금부터 RSA 암호 알고리즘에 대하여 알아보자. 2. RSA 알고리즘 1) 키생성 (개인키와 공개키 만들기) 과정 우선 다른 암호 알고리즘과 마찬가지로 키를 생성해야 한다. 공개키 방식을 사용하기 때문에 개인키와 공개키 두 개를 생성해야 한다. 공개키와 개인키는 다음과 같다. 공개키 : n과 e 두가지 정수로 이루어져 있는 키 개인키 :..

1. Swapping swapping이란, 원래 컴퓨터에 돌고 있는 프로세스 중 쓰지 않는 프로세스는 메인 메모리에서 Backing store(SSD, HDD)에 넣는것/빼오는 것이다. 하지만 위의 경우처럼 프로세스 전체를 swap하는 방식은 지금은 쓰지 않는다. 요즘 swapping이라고 하면 프로세스 전체를 바꾸는 것이 아니라 page를 swapping하는 경우를 말한다. 그리고 이를 Demand Paging이라고 한다. 2. Demand Paging 앞서 말했듯이 Demand Paging은 page 단위로 swaping을 하는 것이다. demand paging은 다음 과정을 통해 실행된다. 1) OS가 swap out할 victim page를 고른다.2) disk..

C를 이용해 코드를 짜다보면 구조체를 활용할 때가 많이 있다. 우선 man이라는 구조체를 선언하고 이 구조체 변수에 값을 할당해보자. 위의 코드는 name이라는 문자열과 age라는 정수변수를 가지고 있는 man이라는 구조체를 만들고, alice와 bob이라는 man구조체에 값들을 할당한 코드이다. 위 코드를 실행해보면 할당한대로 잘 나오는 것을 확인할 수 있다. 그렇다면, 구조체를 복사하고싶을때는 어떻게 할까? 일단 등호(=)를 이용하여 구조체를 복사해주는 방법을 생각해볼 수 있다. 이렇게 실행을 해보면, 이렇게 원하는대로 복사가 된 것을 확인할 수 있다. 하지만, 여기서 한가지 문제가 발생하는데, 아래 코드를 보며 살펴보자 앞부분까지는 이전의 과정과 똑같지만, 이후에 alice 구조체의 name변수를 ..