목록3학년 1학기 (106)
오래 못 할 짓 하지 않기

Process Creation ● Parent 프로세스가 Child 프로세스를 만든다. - 모든 프로세스에 id가 있다. = Process identifier - 프로세스들의 parent,child관계로 오른쪽 그림과 같이 트리를 만들 수 있다. 이와 관련된 명령어로는 다음과 같이 3개가 있다. ● fork() : 새로운 Child process를 만들고, 그 프로세스의 Pid를 return받는다. ex) int pid = fork() 하면 자식 프로세스의 pid가 변수에 저장된다. ※ 부모 프로세스에서만 변수 pid에 자식 pid가 저장됨, 자식 프로세스에서는 저 값이 0이다. ● exec() : 프로그램을 실행한다. 근데 이제,, 여러 추가 기능을 곁들인 ● wait() : 자식 프로세스가 끝날 때까..

https://min-h-study-review.tistory.com/266Dynamic Programming알고리즘X디자인 패러다임이다. ● 언제 사용되느냐? : Optimization 문제에서 사용된다. ex) Minimization / Max..~ → 최단 경로 찾기,Job scheduling 과 같이 선택해야 하는 문제에 쓰인다. ● 방법하나의 큰 문제를 Dynamic한 여러 작은 문제로 나누어서 푼다.S라는 큰 문제 하나를 S1,S2,S3...Sm으로 나눈 뒤, 그들을 합한다. 이러면 Divide and Conquer 랑 다를 게 없어보이는데, 차이점으로는 DP는 가장 작은 케이스에서부터 시작한다는 것이다. - 공통점 : 작은 문제를 통해 큰..

문제 1 1. Recursion Tree 그리기위와 같은 형태로 나온다. ● 특정 Level a에서의 node의 개수 = 2^a 개 ● Tree 높이 = T(n)이 그 다음 단계에서 얼만큼 줄어드는지 보면 된다. = T(n/2) = 이런 경우에 마지막 높이일 때 줄어들어 있는 정도는 [ n/2^마지막 높이 ] 일 것이다. → n / 2^h = 1 → h = log2 n ● 각 레벨별 합 lv 0 : cn log (n) lv 1 : cn log (n/2)lv 2 : cn log (n/4)...lv h : cn log (n/2^log2 n) = cn * {..

프로세스 : 실행중인 프로그램 ● 현재 활동중인 상태의 프로세스는 PC값과 , Register들로 표현된다. ● 메모리에서 Process의 Layouts 1) 코드 영역 ( = 텍스트 영역) - [ 실행할 수 있는 코드 = 기계어로 이루어진 명령어 ] 가 저장되어 있다. - CPU가 실행할 명령어가 담긴St다. 2) 데이터 영역 - 프로그램이 실행되는 동안 유지할 데이터 저장 ex) 전역 변수 위에 나온 코드 영역 / 데이터 영역은 고정된 크기를 하는 즉, 메모리를 정적으로 할당하는 영역이다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 3) 힙 영역 - 실행되는 동안 동적으로 공간이 할당되는 영역 → 낮은 주소에서 높은 주소로 할당 4) 스택 영역 - 데이터가 일시적으로 저장되..

● Recurrences : 현재 주어진 함수를 더 작은 함수로 쪼개서 설명하는 방법 방법 1) Substitution Method : 푸는 방법이라기보단 알고있는 게 맞다는 걸 증명하는 방법 방법 2) Recursion - tree : Recursion tree를 만든다. - 각각의 node는 또 다른 작은 문제를 담고있다. → 각 Level의 cost를 합한다. → 모든 Level의 cost를 합한다. 이거 직접 손으로 풀어보기 T(1)은 constant한 값이다. 트리에 있는 Node의 합을 구하기 위해서는 Height를 알아야 한다. 각 레벨마다 Sum을 구했으니 그걸 다 더한다. 각 층을 내려갈 때마다 c뒤에 붙는 것의 분모가 1/4이 됨. = 등비수열의 합 ▼ 풀이 더보기 방법 3) Itera..

OS Design and Implemetation ● User Goal = 사용하기 쉬워야 한다. ● System Goal = Design과 Implement, Maintain이 간편해야 한다. Design할 때 고려해야하는 것 ● Policy = 어떤 게 되어야 하는가? = What ● Mechanism = 어떻게 구현할 것인가? = How OS Structure ● Monolithic 특징 1) 단조로운 구조 , Hardware의 기능이 제한적임 특징 2) System program / Kernel 영역이 나누어져 있다. ● Layered Approach : 가장 중심부 ( layer 0 ) = Hardware 가장 높은 곳 ( layer N ) = User Interface 특징 1) 만들기 단순하..

SELECT { Attribute } FROM { Table } Where { Condition } 쿼리의 구조는 다음과 같다. Select나 가장 처음에 오는 부분에는 Attribute나 세부적인 데이터가 들어간다. FROM 뒤에는 사용/참조할 Table을 적고 Where 뒤에는 조건을 적는다. 이에 실행 순서들을 보면 From → Where → SELECT순서로 실행시킨다. From 에 있는 Table에서 ▶ Where Condition에 맞는 Tuple의 ▶ Attribute를 Select 해서 보여준다. Select 특) ● 정렬 안 함 ( Order by로 가능 ) ● 중복허용 ( DISTINCT 로 중복 제거 가능 ) 출력될 때 내가 원하는 Column 이름으로 바꿀 수 있음 Where a> ..

OS와 유저 사이 Interface 3가지 1. CLI ( Command Line Interface ) : shell 같이 커맨드 쳐서 띄우고 하는 거 2. GUI ( Graphical User Interface ) : Windows , 마우스 같은 거, 3. ( 비교적 새로 나온 거 ) Touch - Screen Interface : Android OS와 프로그램 사이에서의 Interface = System calls API : Application Programming Interface OS의 API = System call System calls의 위치는 다음과 같다. - System calls은 OS에서 사용가능하도록 만들어진 서비스를 이용할 수 있게 해준다. - OS 커널로 Function ca..

f(n) =< c g(n)이라고 할 때 5n^2 = O(n^3) 라고 가정하면 n과 c가 어떻게 되어야 하는가? 현재 형태를 식에 맞춰보면 0 ≤ 5n^2 ≤ c * n^3 이렇다. 0 ≤ f(n) ≤ c * g(n) c가 어떻게 되든 g(n)의 계수가 작아지지 않고 n이 어떤 상수가 되든 f(n)의 계수가 커지지 않으므로 답은 무수히 많다. 질문 : C도 고려를 해야하나? 상수는 떼고 그냥 차수만 생각하면 되는 거 아니었음? 2번 문제 풀기 전에 Notation 사이에 =가 있고 f(n) = g(n)이런 꼴이라면 → f(n)은 g(n) 노테이션 종류에 속한다. 1) O - O(n^3)는 5n^2보다 크거나 같다. 2) X - 위에 설명했으니 패스 3) n^2 + cn = O(n^2) 맞음 4) 5) 같..

OS란? Hardware와 유저 사이에서 일을 해주는 곳이라고 생각하면 된다. - OS 는 Kernel과 부가적인 프로그램으로 이루어져 있음. Operation Device Controller는 Local buffer를 가지고 있다. > 만약 출력장치에 필요한 정보들이 한 번에 들어가면 그것들은 처리하지 못한다. ex) 프린터기에 여러 명령 한꺼번에 넣기. 따라서 Device Controller가 Buffer에 담아두었다가 , 사용 가능하다는 신호(Interrupt)가 오면 그 때 하나씩 가져간다. Interrupt : 하드웨어나 소프트웨어에서 주의를 해달라고 알려주는 신호 Device(Hardware or Software) ↔ CPU ex) 사용자가 어떻게 해달라 , 어떤 일이 끝났거나 시작되어야 한다..