목록CS (27)
포도가게의 개발일지

동시성 프로그래밍이란 ? - 물리적으로는 하나의 일만 처리하지만 논리적으로 여러 일을 동시다발적으로 하는것 - 8장에서 나왔듯이 timer interrupt등 다양한 시그널들을 통하여 코어가 일을 나눠서 하게 된다. 동시성 프로그램을 만들기 위해 세 개의 기본 접근방법이 제공되며 프로세스 I/O 다중화 Thread 가 있다. 프로세스 - 8장에서 처럼 fork 등 chile process를 만들어 여러 프로세스를 만드는 기법 I/O 다중화 Thread - 하나의 프로세스 안에 여러 thread를 만들어 일을 논리적으로 동시에 처리한다. - 각 쓰레드는 고유의 정수 TID, 스택, 스택 포인터, 프로그램 카운터, 범용 레지스터, 조건 코드를 포함한 자신만의 context를 가진다. - 하나의 프로세스 안에..

클라이언트 - 서버 프로그래밍 모델 모든 네트워크 응용 프로그램은 클라이언트-서버 모델에 기초하고 있다.(한개의 서버 프로세스와 한개 이상의 client 프로세스로 구성) 클라이언트-서버 모델에서 근본적인 연산은 트랜잭션이다. 1. 클라이언트가 서버에게 요청을 보냄 2. 서버는 요청을 받고 해석 및 자신의 자원들을 적절한 방법으로 조작 3. 서버는 응답 Response를 클라이언트로 보내고 다음 요청을 기다림 4. 클라이언트는 받은 응답을 처리한다 예를들어 서버로부터 받은 page를 스크린에 디스플레이한다. 네트워크 호스트에게 네트워크는 단지 또 다른 I/O 디바이스이다. 네트워크에서 수신한 데이터는 I/O와 메모리 버스를 거쳐 어댑터->메모리로 DMA(direct memory access)로 전송된다...

part1에서는 묵시적 가용 리스트(implicit list)에 대해 알아보았다. part2는 명시적 가용리스트에 대해 알아 보겠다. 명시적 가용 리스트(explicit list) 묵시적 가용리스트는 블록 할당 시간이 전체 힙 블록의 수에 비례하기 때문에 묵시적 가용리스트는 범용 할당기에 적합하지 않다. 더 좋은 방법은 가용 블록들을 명시적 자료구조로 구성하는 것이다. implicit list 대신 이중 연결 리스트를 사용하면 first fit 할당 시간을 전체 블록 수에 비례하는 것에서 -> 가용 블록의 수에 비례로 바꿀 수 있다. 첫번째 접근법으로는, 새롭게 반환(free)된 블록들을 리스트의 시작 부분에 삽입해서 LIFO순으로 유지하는 것이다. 두번째 접근법으로는, 리스트를 주소 순으로 관리하는것으..

dynamic memory allocation - 동적 메모리 할당기는 heap이라고 하는 프로세스의 가상메모리 영역을 관리한다. - 힙이 미초기화된 데이터 영역 직후에 시작해서 위쪽으로(높은 주소 방향으로) 커지는 메모리 영역으로 가정 - 커널은 힙의 꼭대기를 가리키는 변수 brk(break)를 사용한다. 할당기는 힙을 다양한 크기의 블록들의 집합으로 관리하며, 각 블록은 할당되었거나 가용한 가상메모리의 연속적인 묶음이다. 할당기 기본 유형 명시적 할당기 : C표준 라이브러리는 malloc 패키지라고 하는 명시적 할당기를 제공한다. c는 malloc 함수를 호출해서 블록을 할당하며, free 함수를 이용하여 블록을 반환한다. 묵시적 할당기 : 묵시적 할당기는 가비지 컬렉터라고 알려져 있으며, 자동으로 ..

https://www.youtube.com/watch?v=xLovOdiRtjI&t=2s 한국기술대학교 김덕수 교수님의 강의를 참조하였습니다. Replacement Strategies(교체 기법) Locality 프로세스가 프로그램/데이터의 특정 영역을 집중적으로 참조하는 현상 Locality (example)