CS(76)
-
[CS] 커널에 대한 나름의 이해
커널은 좁은 의미의 운영체제로 항상 메모리에 올라가 있다. 커널의 역할은 자원을 관리하는 것이다. 메모리, 프로세서, I/O Device, 프로세스 등등 운영체제는 사용자 모드가 있고 커널 모드가 있다. 사용자 모드에서 실행된 애플리케이션은 하드웨어 자원에 접근하기 위해서는 커널에 요청을 해야한다. 이 요청이 시스템콜이다. 그러면 커널이 있는 커널 모드가 실행되고 커널이 이를 처리해 다시 요청한 애플리케이션에 시스템콜로 돌려준다. 비유를 하자면 햄버거를 사는 것과 같다. 소비자가 주문을 하면 소비자가 직접 원재료(자원)에 접근해서 햄버거를 만드는 것이 아니다. 소비자(애플리케이션)가 주문(시스템콜 요청)을 하면 직원(커널)이 이 요청을 받아 원재료(자원)을 이용해 햄버거(결과)를 만들고 다시 돌려준다. ..
2023.10.07 -
[CS] 운영체제의 역할에 대한 나름의 이해
운영체제의 역할은 자원을 효율적으로 관리하는 것이다.(자원 관리자) 자원이라 함은 프로세서, 메모리, I/O Device와 같은 하드웨어 자원을 포함해서 프로세스, 파일, 메세지 등과 같은 소프트웨어 자원도 포함한다. 또한 사용자가 편리하게 사용할 수 있는 환경을 제공하는데 예를 들어, 한대의 컴퓨터에 여러 프로그램을 실행해도 각각은 그 프로그램만 실행하고 있다고 느끼도록 해준다. 이도 결국 운영체제가 자원을 효율적으로 관리한 결과이다. 자원을 효율적으로 관리한다는 건 두 가지 측면이 있다. 하나는 말 그대로 최대한의 성능을 낼 수 있도록 관리하는 것이고 다른 하나는 사용자간에 공평하도록 분배하는 것이다. Reference https://core.ewha.ac.kr/publicview/C010102014..
2023.10.07 -
[CS] 에라토스테네스의 체 시간복잡도
O(NloglogN)
2023.09.21 -
[CS] 정렬에 대한 나름의 이해
Comparison Sort: 비교를 통해 정렬하는 방식이다. Bubble Sort: 인접한 두개를 반복해서 비교한다. 제일 큰 수부터 쌓인다. Selection Sort: 인덱스를 선택하고 기억하고 있다가 한번 훑으며 최솟값을 찾아 그 인덱스의 값을 고쳐준다. Insertion Sort: 오른쪽으로 순회하며 그 값에 해당하는 위치에 삽입해준다. Merge Sort: 쪼개고 병합하며 정렬해간다. n이 트리의 깊이 logn으로 줄기 때문에 시간 복잡도가 감소한다. Heap Sort: 넣고 뺄 때 최소나 최대를 위로 올려준다. 그래서 logn이고 n개에 대해서 진행되니 nlogn이다. Quick Sort: pivot을 기준으로 왼쪽과 오른쪽 기준을 가지며 pivot보다 크고 작으면 swap해준다. 엇갈릴 때..
2023.09.20 -
[CS] 다익스트라 알고리즘의 시간 복잡도
각 간선마다 힙에 넣는다고 하면 E * log(E) 각 간선마다 하는 이유는 다익스트라는 모든 간선을 돌게 되어 있기 때문이다. 그런데 V^2 > E라면 즉 sparse하다면 E * log(V)가 된다. Reference https://ds-jungsoo.tistory.com/7 Shortest Paths(다익스트라 알고리즘 (Dijkstra Algorithm)) 이번에는 다익스트라 알고리즘에 대해서 공부를 해보았다. 다익스트라 알고리즘은 단일 시작점으로부터 다른 노드들까지의 최단 경로를 구하는 알고리즘이다. 또한, 음의 가중치를 허용하지 ds-jungsoo.tistory.com
2023.09.19 -
[CS] 알고리즘의 두 기둥
첫 번째는 어떤 알고리즘을 써야 하는가? DP, 그리디, 그래프 탐색 등등 두 번째는 어떤 자료구조를 써야 하는가? 해시맵, 스택, 큐, 덱, 힙 등등 Reference https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Algorithm
2023.09.19