암호화 알고리즘은 대표적으로 대칭키 암호화와 비대칭키 암호화가 있다. 대칭키 암호화는 같은 키를 사용해 암호화와 복호화를 하는 방법으로 이는 수신측에 키를 전달하는 과정에서 유출될 우려가 있다. 그에 반해 비대칭키 이와 다르게 공개키와 개인키가 있다. 이 방법은 공개키로 암호화하고 개인키로 복호화를 하는 방법이다.
동적 계획법의 경우 점화식을 이용하여 모든 상황을 계산하는 방법이고, 탐욕법은 각 단계에서 최적의 상황을 선택하여 문제를 해결하는방법이다. 동적계획법은 최적의 경로를 구할 수 있으나 계산하는데 비교적 오랜 시간이 걸린다는 단점이 있고 탐욕법은 빠르게 문제해결이 가능하나 최적이 아닌 경우가 있거나 풀리지 않는 경우가 있다.
재귀는 스택에 쌓이기 때문에 stack overflow의 우려가 있다. 따라서 모든 문제는 재귀로 변환하여 풀 수 있지는 않은 것 같다.
시스템 콜이란 커널 모드를 활용할 수 있게 OS가 제공하는 인터페이스를 의미한다.
Dual mode란 운영체제를 보호하기 위한 기법으로 사용자가 접근할 수 있는 유저 모드와 접근할 수 없는 커널 모드가 존재한다. 유저 모드에서는 제한된 접근만 가능하고 하드웨어에 직접 접근이 불가능하다. 하지만 커널모드에서는 모든 하드웨어 접근 및 제어가 가능하고 시스템의 모든 메모리에 접근 및 모든 CPU 명령을 실행 가능하다. 이중 모드의 역할은 악의적인 사용자로부터 운영체제를 보호하고 입출력장치 및 메모리 등을 보호하는 것 이다.
커널은 내부적으로 각각의 시스템 콜을 구분하기 위해 기능별로 고유번호를 할당하고 그 번호에 해당하는 제어 루틴을 커널 내부에 정의한다.
인터럽트란 현재 실행 중인 작업을 즉시 중단하고 발생한 상황에 대한 우선 처리가 필요함을 CPU에 알리는 것이다.
인터럽트 처리는 인터럽트가 발생하면 현재의 상태를 스택에 저장한 후의 인터럽트 서비스 루틴을 실행한다. 그 후 다시 원래 작업으로 복귀한다.
특정 주기를 가지고 그 주기마다 어떠한 처리를 위한 시그널이 들어왔는지 체크를 하는 방식을 의미한다.
SVC
사용자가 프로그램을 실행시키거나 supervisior를 호출하는 것
실행중에 있는 프로그램
명령어들의 집합, 수동적인 상태이며 디스크 안에 저장되어있다.
실행중의 있는 프로그램, 운영체제로 부터 실행에 필요한 자원을 할당 받은 상태
프로세스가 할당받은 자원을 이용하는 실행단위
스레드는 프로세스가 아니기 때문에 PCB를 가지고 있지 않다.
fork()
를 통해 자식 프로세스 생성exec()
를 통해 다른 작업으로 변경pthread_create()
를 통해 프로세스 생성wait
을 통해 종료상태를 회수하면 좀비프로세스 제거데몬 프로세스란 운영체제에서 부팅시 자동으로 켜져 백그라운드에서 계속 실행되는 프로세스를 의미한다.
참고자료
- https://velog.io/@inyong_pang/Programming-암호화-알고리즘-종류와-분류
- https://skmouse.tistory.com/entry/탐욕Greedy알고리즘동적Dynamic계획법
- https://m.blog.naver.com/vail131/221943619686
- https://didu-story.tistory.com/311
- https://neos518.tistory.com/115
- http://blog.skby.net/이중-모드-dual-mode/
- https://gona.tistory.com/37
- https://devlov.tistory.com/1
- https://velog.io/@gparkkii/ProgramProcessThread
- https://love-every-moment.tistory.com/53
- https://wildeveloperetrain.tistory.com/168
- https://codetravel.tistory.com/31