분류 전체보기
![[System Program] [7] [Virtual Memory]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmVC4y%2Fbtq6aQd5kvI%2FrYtuwvkIfsjZ7k2m0tp6X1%2Fimg.png)
[System Program] [7] [Virtual Memory]
> A System Using Physical Addressing; 간단한 시스템에 사용 > A System Using Virtual Addressing # MMU(Memory Management Unit); VA를 PA로 변환해주는 역할 > Address Spaces # Linear address space {0, 1, 2, 3, 4, ...} # Virtual address space {0, 1, 2, 3, 4, ..., N-1}; 2^n가지의 virtual address # Physical address space {0, 1, 2, 3, 4, ..., M-1}; 2^m가지의 physical address > VM as a Tool for Caching # Virtual Memory; 실제 메모리 크..
![[System Program] [9] Concurrent Programming](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz2pP8%2Fbtq6er44Pyj%2FbG2JpfetGvbJhHdMF4kBt0%2Fimg.png)
[System Program] [9] Concurrent Programming
> Iterative Servers (반복 서버) one thread로 여러 클라이언트의 요청을 처리하는 방식 (순차적) 한 번에 하나의 request만 처리 가능하다. (sequential하게 처리) -> 연결된 서버와 클라이언트 간 통신 시간이 길어지면 다른 클라이언트의 대기 시간이 길어질 수 있다. => Solution: concurrent servers(병행/병렬 서버)를 사용한다. 여러 클라이언트의 요청을 한 번에 처리하기 위해 multiple concurrent flow를 사용 > Concurrent Servers Concurrent server를 구현하는 방식에는 3가지 방법이 있다. # Process-based 커널이 multiple logical flow를 생성; 각 flow는 priva..
![[System Program] [5] Exceptions and Processes](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2J8oF%2Fbtq52A4pNxy%2FYvkKd72KcKiGHZLwdX3sJk%2Fimg.png)
[System Program] [5] Exceptions and Processes
> Control flow (제어 흐름) # 프로세서는 한 번에 하나의 instruction을 실행한다. 시작부터 끝까지, CPU는 일련의 instuction들을 하나씩 읽고 처리한다. -> CPU's control flow; 프로그램에서 실행되는 각 구문, 명령어나 함수가 호출되는 순서 > Altering the Control Flow 순차적으로 진행되는 제어 흐름의 변화를 일으키는 요인 # program state를 변화시키는 요소 Jumps and branches Call and return # system state를 변화시키는 요소 -> exceptional control flow 발생 Data arrives from a disk or a network adapter Instruction div..
![[System Program] [4] Cache Memory](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo0dfT%2Fbtq54pgdBJl%2FWg4oxeQkDrqCXlNQXS2Alk%2Fimg.png)
[System Program] [4] Cache Memory
> Cache Memories Cache memories are small, fast SRAM-based memories managed automatically in hardware 이번 강의에서 cache는 CPU와 Main memory 사이의 data access time 차이를 줄여주는 역할을 하는 메모리로 제한 > Cache Memory 구조 Cache size: C = B * E * S data bytes > Addressing Cache; 캐시를 찾는 방법 # m bits는 2^m가지의 address를 표현가능하다. > Direct-Mapped Cache; 1 line per set # set selection; set index를 사용해서 set에 접근 # line matching; tag가..
![[System Program] [3] Memory Hierarchy](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxtUac%2Fbtq53Q51lma%2FXTCvRecFalibD63VVmYGx0%2Fimg.png)
[System Program] [3] Memory Hierarchy
[Memory Hierarchy] > Random-Access memory(RAM) # 주요 특징 RAM is traditionally pachaged as a chip 저장 단위는 'cell' (one bit per cell) 여러 RAM chips가 메모리를 구성한다. # SRAM (Static RAM) 전원 공급이 유지된다면, 값(value)를 무한이 유지한다. 접근이 빠르고, 비싸다. # DRAM (Dynamic RAM) 접근이 SRAM에 비해 상대적으로 느리고, 싸다. > Connecting CPU and Memory # bus; CPU와 memory는 bus에 의해서 연결된다. -> bus는 주소, 데이터, 제어 신호를 전달하는 collection of parallel wires이다. > Co..
![[Introduction of Computer Architecture] Arithmetic for Computers](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZmX9A%2Fbtq52cWq6fX%2FEDEh4K1vPkzshWF4hsVl7K%2Fimg.jpg)
[Introduction of Computer Architecture] Arithmetic for Computers
> Floating Point > Floating Point Standard # IEEE std 754-1985에 의해 정의 # single precision (32-bit); float # double precision (64-bit); double > IEEE floating-point format > Exponent(= Actual exponent + Bias)를 구할 때 Bias를 더 하는 이유 actual exponent가 음수값일 경우를 고려해주기 위해서! > Single-Precision Range > Floating Point Example > Limited Precision 0.1이 왜 정확하게 0.1로 컴퓨터에서는 표현할 수 없는가? 결론적으로는 제한된 비트로 실수를 표현해야하기 때문에..
![[Introduction of Computer Architecture] 메모리 계층 구조](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq7JLj%2Fbtq5QwntKEZ%2FFfzgkQCLqAZ57Aw4NdYCzK%2Fimg.png)
[Introduction of Computer Architecture] 메모리 계층 구조
5.1 서론 > 지역성의 원리(principle of locality) 프로그램은 어떤 특정 시간에는 주소 공간 내의 비교적 작은 부분에만 접근한다 # 시간적 지역성(temporal locality) 어떤 데이터가 참조되면 곧바로 다시 참조될 가능성이 높다는 원칙 #spatial locality 하나의 데이터가 참조되면 곧바로 그 주위의 데이터가 참조될 가능성이 높다는 원칙 > 메모리 계층구조(memory hierarchy) 여러 계층의 메모리를 사용하는 구조 프로세서로부터 거리가 멀어질수록 메모리 크기와 접근 시간이 증가한다. > 블록(block) / 라인(line) [가장 하위 계층의 메모리를 도서관이라고 했을 때 블록은 책 한권에 비유할 수 있다.] > 적중률(hit rate) = hits/acce..
![[System Program] [1] Data Presentation](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM0MkI%2Fbtq5JDMy2Mi%2FH2GB2sgkBcK1RQhxsbAQMK%2Fimg.png)
[System Program] [1] Data Presentation
[0. Overview] # compile [.cpp, .h]-> preprocessing [.i, .ii]-> compilation [.s]-> assemble [.o, .obj]-> linking[.exe] # objdump: object file의 binary data를 확인 가능하게 해주는 리눅스 명령어/ reverse engineer # 'int's are not integers, 'float's are not reals - finite space 때문(수는 무한하지만, 컴퓨터 자료형의 표현 공간은 유한) Is x^2 >= 0? int는 4byte에 표현되지 않으면 overflow가 발생 Is (x+y)+z = x+(y+z) ? [1. Bits and Bytes] # Boolean Algebra..
![[시스템프로그래밍 실습] Pthreads](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbjQ6j%2Fbtq44OHKx8Q%2FXll3wPn78XaIjz3GN39ClK%2Fimg.jpg)
[시스템프로그래밍 실습] Pthreads
> Threads vs. Processes # Program: 어떤 작업을 위해 실행할 수 있는 파일 # Process: 컴퓨터에 연속적으로 실행되고 있는 컴퓨터 프로그램 - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) - 운영체제로부터 시스템 자원을 할당받는 작업의 단위 - 동적인 개념으로는 실행된 프로그램을 의미 - 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. -> 따라서, 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다. - 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. # Threads: 프로세스 내에서 실행되..
[시스템프로그래밍 실습] Sockets
> Internet Connections # Connection - Clients and servers communicate by sending streams of bytes over connections : Point-to-point, full-duplex, and reliabe - A socket is an endpoint of a connection / door of process socket: 네트워크 상에서 동작하는 프로그램 간 통신의 종착점; 프로그램이 네트워크에서 데이터를 통신할 수 있도록 연결해주는 연결부 endpoint: IP Address와 port 번호의 조합을 뜻하며 최종 목적지를 의미 Ex) 최종목적지는 사용자의 디바이스(PC, 스마트폰 등) 또는 서버 * socket addres..