전체 글
-
Synchronization : Basics시스템 프로그래밍 2022. 4. 20. 11:45
Threads Memory Model Conceptual model 여러 thread들은 하나의 process내에서 작동합니다. 각 thread들은 각자의 thread context를 가집니다. 예를 들어 thread ID, stack, stack pointer, PC, condition code, and GP register 가 있습니다. 모든 thread들은 이외에 나머지 것들을 공유합니다. 예를들어 Code, data(전역변수), heap, 라이브러리가 있습니다. Operational model 어떠한 thread들도 다른 thread의 stack 영역의 data를 write, read할 수 있습니다. concetual model과 operational model의 mismatch때문에 문제점이 발..
-
Logic Design컴퓨터 아키텍쳐 2022. 4. 18. 20:45
Overview of Logic Design Fundamental Hardware Requirements (하드웨어의 기본 요건) 1. Communication (어떻게 다른곳으로 값을 얻는지) 2. Computation (계산) 3. Storage (저장소) Bits are Our Friends (bit들은 우리의 친구입니다.) 모든 것은 0과 1로 표현됩니다. Digital Signals 전압값은 0에 해당하는 영역, 1에 해당하는 영역, Guard range(보호영역) 총 3개의 영역으로 구분됩니다. 즉, 보호범위에 있지 않은 전압들은 0 또는 1로 해석됩니다. 이러한 원리로 신호에 가해지는 작은 noise들은 데이터의 표현에 거의 영향을 주지 않으며 CPU 내부 회로를 더욱 단순하게 design ..
-
Concurrent Programming시스템 프로그래밍 2022. 4. 16. 18:42
Concurrent Programming is Hard ! concurrent 프로그래밍은 어렵습니다. 보통 우리는 sequential한 사고방식을 가지고 있어 time(시간)이라는 개념이 다르게 느껴집니다. 또한 동시에 프로그램이 진행되기 때문에 어떤 프로그램이 어떤 event가 발생했는지 예상할 수가 없어 비동기 방식으로 처리 해야합니다. 디버깅도 쉽지않습니다. 이러한 concurrent의 문제점이 존재합니다. Race (경쟁) OS가 process를 여러개 띄어놓고 time sharing을 하기 때문에 스케줄링(os 역할) 결과값 다를 수 있음 내가 결정할 수 있는 사안이 아닙니다. 따라서 스케줄링의 순서에 따라 내가 생각한 결과와 다르게 나올 수 있습니다. Deadlock (교착상태) 우리가 교통..
-
Intermediate SQL데이터 베이스 시스템 2022. 4. 16. 12:01
Joined Relations join 연산은 두개의 relation을 join해서 새로운 relation을 return하는 것입니다. join 연산은 Cartesian product와 동일합니다. join 연산은 전형적으로 from clause에 사용됩니다. join 의 유형은 총 3가지가 있습니다. 1. Natural join 2. Inner join 3. Outer join Natural Join in SQL natural join은 모든 공통된 attribute를 기준으로 합치고 중복되는 tuple 중 오직 1개만 유지합니다. ex) 교수의 이름과 교수들이 가르치는 course_id를 정렬해라 select name, course_id from students, takes, where student..
-
Network Programming : Part 2시스템 프로그래밍 2022. 4. 14. 14:19
Socket Interface : socket socket 함수에 관한 설명입니다. client와 server는 socket함수를 통해 socket descriptor을 만듭니다. Sockets Interface : bind server는 bind 함수를 통해 server socket은 secket descriptor을 가지고 bind하겠다는 것을 kernel에게 알려줍니다. sever 쪽 process는 sockfd를 통해 데이터를 읽을 수 있고 connection에 도착하는 모든 byte를 읽을 수 있습니다. 마찬가지로 sockfd를 통해 쓰기를 할 수 있습니다. connection의 끝점인 addr를 이용해 데이터를 전송하게 됩니다. Sockets Interface : listen kernel이 ..
-
Network Programming : Part 1시스템 프로그래밍 2022. 4. 12. 13:58
A Client-Server Transaction 위의 이러한 네트워크 client-sever 관계의 sequence를 client-sever transaction이라고 합니다. Hardware Organization of a Network Host Computer Networks network는 계층 시스템으로 이루어져 있습니다. SAN(System Area Network) : 방 하나정도 LAN(Local Area Network) : 빌딩 전체나 캠퍼스 전체 WAN(Wide Area Network) : 나라 와 나라 사이의 네트워크 이러한 네트워크 시스템을 internet이라고 합니다. 우리가 일반적으로 알고 있는 Internet은 internet의 유명한 예시입니다. Lowest Level : Et..
-
Chapter 3 : Arithmetic for Computers컴퓨터 아키텍쳐 2022. 4. 11. 19:01
Arithmetic for Computers 컴퓨터는 인간이 아니기 때문에 한정된 bit안에 수를 저장합니다. 만약 한정된 bit를 초과하는 수를 저장하면 Overflow가 발생합니다. 덧셈 연산에 overflow가 발생하는 경우는 다음과 같습니다. 1) 두 개의 양수를 더했는데 결과가 음수가 나옴 2) 두 개의 음수를 더했는데 결과가 양수가 나옴 뺄셈 연산에 overflow가 발생하는 경우는 다음과 같습니다. 1) 음수 - 양수의 결과값이 양수 2) 양수 - 음수의 결과 값이 음수 Dealing with Overflow C언어의 경우 Overflow를 무시 MIPS instruction에서는 add, addi, subu가 무시합니다. 반면에 다른언어(Ada, Fortan)의 경우 Overflow가 발생..
-
Chapter 6 : Machine-Level Programming 2 (Control)컴퓨터 시스템 개론 2022. 4. 6. 21:30
Processor State (x86-64) 실행 중인 프로그램에 대한 정보는 크게 4개로 분리할 수 있습니다. 1. Temporary data(임시 데이터) %rax, %rbx 등 범용 레지스터에 저장되있습니다. 2. Location of runtime stack (런타임 스택의 포인터 저장) %rsp 레지스터 3. Location of current code control point (다음 실행할 명령어의 메모리주소를 저장함으로써 현재의 제어위치) %rip 레지스터 (PC 레지스터) 4. Status of recent tests (조건 분기/이동 에 사용되는 상태값을 저장) condition code(컨디션 코드) (CF, ZF, SF, OF) 레지스터 Condition Codes : Implicit..