본문 바로가기

CS 과목(CS科目)

Thread Context Switching vs Process Context Switching context switching(문맥 교환) CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것. ( 엄연히 말하면 위 정의는 틀렸다. 오늘날의 CPU는 실행 단위(unit of execution)를 스레드로 한다. 그렇기에 더이상 cpu는 프로세스를 실행한다는 말은 성립이 되지 않기에, 실행 중이던 프로세스가 다른 프로세스로 교체되는 것은 더 이상 성립이 되지 않는다. 만약 누군가가 프로세스에 대해 문맥 교환이 일어났다고 함은, 그건 싱글 스레드로 구성된 프로세스가 있는 데, 그 스레드가 다른 프로세스의 싱글 스레드로 교체가 되었다는 말이다.) Context 프로세스/스레드의 상태(cpu상태, 메모리 상태 등등) Context Switching이 일어나는 시점 1. 주어진.. 더보기
헷갈리는 개념들에 대한 정리(feat 프로세스, 스레드, 멀티태스킹, 멀티스레딩 etc) I/O 작업의 3가지 의미 1. 파일을 읽고 쓰는 것 2. 네트워크의 어딘가와 데이터를 주고 받는 것 3. 입출력 장치(EX.마우스, 키보드)와 데이터를 주고 받는 것 단일 프로세스 시스템(초창기의 OS Architecture) 한 번에 하나의 프로그램만 실행됨. 프로세스들이 순차적으로 실행이 되므로, 하나의 프로세스가 모두 실행이 완료되어야만 그 다음의 프로세스를 실행할 수 가 있다. 단점 : cpu 사용률이 매우 안 좋음. -> 프로세스의 I/O 작업 중 CPU는 유휴 상태에 들어 간다. 이러한 문제를 해결하기 위하여 여러 개의 프로그램을 메모리에 올려 놓고 동시에 실행시키자. 즉, I/O 작업이 발생하면 CPU를 놀게 놔 두는 것이 아니라, 대기 중인 프로세스를 올려 실행을 시킨다. 이것을 멀티 프.. 더보기
Stack Frame( in Java ) with THIS pointer 함수/메서드가 호출이 될때마다 메모리의 stack 영역에는 각 함수의 중간값들을 저장하기 위하여 stack frame이 생성이 된 다. 그리고 해당 함수/메서드가 종료가 되면 Frame Pointer를 사용하여 이전 함수/메서드로 실행의 흐름이 바뀐다. JAVA, C++에서는 메서드가 호출이 될 때, 생성자가 호출이 될때, THIS 포인터가 Stack Frame에 할당이 된다는 사실을 오늘 처음 알았기에 , 블로 그에 정리를 해 본다. 1. 생성자 호출 new Counter() 생성자도 메서드이기에 stack frame이 할당이 되고, this 레퍼런스가 만들어 지고 그 레퍼런스는 객체의 주 소를 가리키게 된다. 생성자의 실행이 종료되면, main 메서드의 stack frame의 c 레퍼런스에 this .. 더보기
26.partitioning ,sharding, replication partitioning(vertical partitioning , horizontal partitioning) database table을 더 작은 table들로 나누는 것. vertical partion vertical partion의 사용예시 1. 정규화 2. 민감한 정보에는 제한을 더 걸어서 보호하기 위하여 vertical partion을 할 수가 있다. 3. 자주 사용되는 attribute들만 모아서 partion을 만들 수가 있고, 자주 사용되지 않는 attribute만 모아서 partion을 만들 수 있다. -> vertical partion은 꼭 정규화에만 사용되는 것이 아니라 또 1,2,3 때에만 사용되는 것이 아니라 여러 상황에서 사용된다. 정규화 과정은 결국에는 vertical part.. 더보기
25. DB INDEX DB 쿼리 속도를 높이는데 너무나도 중요한 것이 바로 index입니다 그래서 실무에서 매우 매우 자주 사용되는데요, 이번 시간에는 인덱스가 왜 중요한지, 어떻게 사용되는지, 동작 원리는 무엇인지 핵심만 모아서 아주 알차게 설명합니다. 그럼 오늘도 고고씽!!! 오늘날 대부분의 DBMS는 B-tree 기반의 index로 원하는 정보를 빨리 찾는다. (MySQL의 경우 B-tree 이외에도 hash index도 제공을 한다.) SELECT,DELETE,UPDATE 그리고 JOIN에서의 조건(condition)을 만족하는 tuple들을 빠르게 찾기 위해서 index를 사용한다. 아래에서 이미 table에 tuple들이 저장돼 있을 때, 어떻게 index를 생성하는지에 대해 알아 보자. name은 중복된 값을 허.. 더보기
24. DB 정규화(normalization) - Part 2 3Normal Form(3NF) EMPLOYEE_ACCOUNT Table의 FD를 시각화한 것이다. 그런데 테이블의 {empl_id,empl_name}을 보면 중복된 데이터가 너무 많은 것을 알 수가 있다. 왜 저 부분에서 중복된 데이터가 발생할 수밖에 없는지, 원인을 살펴보자. 우선, empl_id -> empl_name이라는 FD 관계에 있다. 그리고 account_id(key) -> empl_id이다. 위 2가지 FD를 좀 더 그림으로 이해해 보자. Key가 {bank_name.account_num}일 때에도 위와 같은 이유로 중복이 발생을 한다. 모든 non prime attribute는 여기서는 {class,ratio, empl_id, empl_name}에 해당 key는 {bank_name,ac.. 더보기
23. DB 정규화(normalization) - Part 1 그 전에 아래의 용어들을 짚고 넘어 가자. 1. super key : table에서 tuple들을 unique하게 식별할 수 있는 attribute set 2. (candidata) key : super key 중에서 어느 한 attribute라도 제거하면 tuple들을 unique하게 식별 못하는 super key. 3. primary key : (candidata) key 중에서 실제로 tuple을 unique하게 식별하기 위한 선택한 (candidta) key. 4. prime key : 임의의 key에 속하는 attribute. 5. non-prime key : 어떤 (candidate) key에도 속하지 않는 attribute. EMPLOYEE_ACCOUNT에 존재하는 모든 FD를 아래에서 보여.. 더보기
22.함수 종속(Functional Dependency) 위의 정의를 따라도 되지만, 나는 x의 값에 대응하는 y의 값이 오로지 1개만 있을 때, y는 x에 종속된다 or x는 y를 결정한다 라고 정의를 하겠다. 종속 관계를 위 그림의 기호로 나타낼 수가 있다. (x에 대한 y값이 오로지 1개만 존재하는 관계) Jinho라는 x값에 대해 y값이 2개가 존재하므로, 위 경우는 FD가 존재하지 않는다. 위와 같이, 테이블의 특정 부분과 특정 시점의 테이블을 보고 FD를 생각해서는 안된다. 테이블의 스키마(Schema)를 보고 의미적으로 FD가 존재하는지 파악해야 한다. (아래 참조) 위 경우는 FD이다. 위 경우는 FD가 아니다. 왜냐하면 empl_id에 대해서 dept_id가 2개 이상 존재할 수가 있기 때문이다. 1. x->y라고 해서, 반드시 y->x가 존재.. 더보기