728x90

Study/TIL(Today I Learned) 270

24.02.21 CSAPP, TCP/IP, 백준, C++

CSAPP 12.6 병렬성을 위해서 쓰레드 이용하기 모든 프로그램의 집합은 중첩되지 않도록 순차적, 동시성 프로그램으로 나눌 수 있다. 순차 프로그램은 단일 논리흐름으로 작성 할 수 있다. 동시성 프로그램은 다수의 동시성 흐름으로 작성할 수 있다. 병렬 프로그램은 다중 프로세서에서 돌아가는 동시성 프로그램이다. 그래서 병렬 프로그램의 집합은 동시성 프로그램 집합의 부분 집합이다. 서로 다른 쓰레드들에 작업을 할당하는 가장 직접적인 접근방법은 이 배열을 t개의 중첩되지 않은 영역으로 나누고, 그 후에 t개의 서로 다른 쓰레드 각각을 자신의 영역에서 동작하도록 할당한다. 메인 쓰레드는 고유의 쓰레드 ID를 각각 피어쓰레드로 전달한다. 각각의 피어쓰레드는 자신의 쓰레드 ID를 사용해서 자신이 작업해야 할 배열..

24.02.20 퀴즈, CSAPP, 백준

퀴즈 1. 페이징과 세그멘테이션의 정의 및 각각의 장단점에 대해 서술하시오 세그멘테이션(segmentataion)과 페이징(paging)은 컴퓨터 메모리 관리 방법입니다. 세그멘테이션 이는 메모리를 의미 있는 단위인 ‘세그먼트’로 나누는 방법입니다. 각 세그먼트는 시작 주소와 길이를 가지며, 다른 유형의 데이터(예 : 코드, 데이터, 스택)를 위해 사용된다. 세그멘테이션은 메모리를 더 유연하게 관리할 수 있게 해주며, 프로그램의 논리적 구조를 반영할 수 있다. 페이징 페이징은 메모리를 동일한 크기의 블록, 즉 ‘페이지’로 나누는 방법이다. 각 페이지는 가상 메모리 주소와 매핑되며, 페이지 테이블을 통해 물리적 메모리 주소로 변환된다 페이징은 메모리 관리를 단순화하고, 메모리의 낭비를 줄이며, 프로그램 간..

24.02.19 CSAPP, 백준, Keyword

CSAPP 12. 동시성 프로그램 논리적 제어흐름은 이들이 시간적으로 중첩되면 동시적이다. 이와 같은 현상을 동시성이라고 한다. 응용수준 동시성은 다양한 경우 유용하다. 느린 I/O 디바이스 접근하기 : 응용프로그램은 유용한 작업을 I/O요청과 겹치게 한다. 사람들과 상호 작용하기 : 사용자가 어떤 동작을 요청할 때 마다, 이 동작을 수행하기 위해 별도의 동시성의 논리 흐름이 생성된다. 작업을 지연시켜서 시간지연 줄이기 : 다른 동작을 지연시키고 이들을 동시에 수행해서 특정 독작의 시간 지연을 축소하기 위해 동시성을 이용한다 다수의 네트워크 클라이언트 처리 : 클라이언트마다 별도의 논리흐름을 생성하는 동시성 서버 멀티코어 머신에서 병렬로 계산하기 동시성 프로그램을 만들기 위한 세 개의 기본 접근방법 프로..

24.02.18 CSAPP 11, Keyword

24.02.18 CSAPP 11, Keyword CSAPP 11. 네트워크 프로그래밍 모든 네트워크 응용들은 동일한 기본적인 프로그래밍 모델에 기초하고 있으며 이들은 비슷한 전체 논리구조를 가지고 동일한 인터페이스를 사용한다. 11.1 클라이언트 - 서버 프로그래밍 모델 모든 네트워크 응용프로그램은 클라이언트 - 서버 모델에 기초하고 있다. 이 모델을 사용해서 응용은 한 개의 서버 프로세스와 한개 이상의 클라이언트 프로세스로 구성된다. 서버는 일부 리스소를 관리하고, 이 리소스를 조작해서 클라이언트를 위한 일부 서비스를 제공한다. 클라이언트 - 서버 모델에서 근복적인 연산은 트랜잭션이다. 클라이언트 - 서버 트랜잭션은 네 단계로 구성된다. 클라이언트가 서비스를 필요로 할 때, 클라이언트는 한 개의 요청을..

24.02.17 묵시적 리스트, 백준, C++

24.02.17 묵시적 리스트, 백준, C++ 묵시적 리스트 구현 모든 할당기는 블록 경계를 구분하고, 할당된 블록과 가용블록을 구분하는 데이터 구조를 필요로 한다. 일반적인 방법으로는 추가적으로 1 블록을 사용해 블록 앞에 블록의 크기를 저장하는 방법이 있다. 이때 추가적으로 사용되는 1워드를 헤더라고 한다. 헤더는 블록 크기와 블록이 할당 되었는지, 혹은 가용상태인지를 인코딩한다. 데이터 이후에 사용되지 않은 패딩이 따라올 수도 있는데, 이들의 가변적이다. 외부 단편화를 극복하기 위한 할당기의 전략일 수도, 정렬 요구 사항일수도 있다. 특별한 마지막 블록(1/0)이 필요하다. 에필로그 헤더라고 부른다. 마지막 노드를 식별하고 리스트 무결성을 유지하는데 중요한 역할을 한다. 리스트 순회 및 특수 기능 ..

24.02.16 간단한 정리, 코드리뷰에 대해, 백준, C++

간단한 정리 9. 가상메모리 가상메모리는 각 프로세스에 하나의 크고 통합된, 사적 주소공간을 제공한다. 가상메모리의 세 개의 중요한 기능 메인 메모리를 디스크에 저장된 주소공간에 대한 캐시로 취급해서 메인 메모리 내 활성화 영역만 유지하고, 데이터를 디스크와 메모리간에 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용한다. 각 프로세스에 통일된 주소공간을 제공함으로써 메모리 관리를 단순화한다. 각 프로세스에 의한 손상으로부터 보호한다. 9.1 물리 주소 가상주소 방식 물리주소에 순차적으로 접근 가상주소 : CPU가 가상주소를 생성해서 메인 메모리로 접근, 메모리로 가기 전 주소번역 과정을 통해 물리주소로 변환한다. 9.3 캐싱 도구로서의 VM 결과적으로, 가상메모리는 디스크에 저장된 N개의 바..

24.02.15 간단한 정리, 백준

간단한 정리 8. 예외적인 제어흐름 시스템들은 또한 내부 프로그램 변수에 의해 표시되지 않으며, 프로그램의 실행과는 반드시 관련되어 있지 않은 시스템의 상태변화에도 반응할 수 있어야 한다. 현대의 시스템들은 제어흐름의 갑작스러운 변화를 만드는 방법으로 이런 상황에 반응한다. 일반적으로 이와 같은 급격한 변화를 예외적인 제어흐름(ECF : Exceptional Control Flow)라고 한다. 8.1 예외상황 예외상황은 부분적으로 하드웨어와 운영체제에 의해 구현된 예외적인 제어흐름의 한 가지 형태이다. 예외상황은 어떤 프로세서 상태의 변화에 대한 대응이다. 상태의 변화 → 이벤트라고 한다. 프로세서가 이벤트가 발생했다는 것을 감지하면, 예외테이블이라고 하는 점프테이블을 통해서 이 특정 종류의 이벤트를 처..

24.02.14 간단한 정리, 백준, C++, Keyword

간단한 정리 6장 정리 6.1.1 랜덤 - 접근 메모리(RAM : Random Access Memory) 동적(DRAM) : 메인메모리, 그래픽 시스템의 프레임버퍼 정적(SRAM) : 캐시메모리 정적RAM(SRAM) 각 비트를 이중안전(bistable) 메모리 셀에 저장 두 가지 상태외 다른 상태들은 모두 불안정하다. - 역진자와 유사하다. 동적RAM(DRAM) 각 비트를 전하로 캐패시터에 저장 외란에 민감하다. DRAM 칩 내의 셀들은 슈퍼셀들로 나누어지며 각각은 DRAM셀들로 이루어진다. 슈퍼셀은 직사각형 배열이다. 정보는 pin이라고 부르는 외부 커넥터를 통해 칩의 안과 밖을 흘러 다닌다. 일반DRAM 슈퍼셀(i,j)의 내용을 읽으려면 메모리 컨트롤러는 행 주소i를 DRAM에 보내고, 다음에 열 주..

24.02.13 CSAPP 9

CSAPP 9. 가상 메모리 메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해서 현대의 시스템은 가상메모리(VM : Virtual Memory)이라고 알려진 메인 메모리 추상화를 제공한다. 가상 메모리는 한 개의 깔끔한 메커니즘을 사용해서 세 개의 중요한 기능을 제공한다. 메인 메모리를 디스크에 저장된 주소공간에 대한 캐시로 취급해서 메인 메모리 내 활성화 영역만 유지하고, 데이터를 디스크와 메모리안에 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용한다. 각 프로세스에 통일된 주소공간을 제공함으로써 메모리 관리를 단순화한다. 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호한다. 9.1 물리 및 가상주소 방식 컴퓨터 시스템의 메인메모리는 M개의 연속적인 바이트 크기..

24.02.12 CSAPP 8, Stack & Queue 구현

CSAPP 8. 예외적인 제어흐름 시스템들은 또한 내부 프로그램 변수에 의해 표시되지 않으며, 프로그램의 실행과는 반드시 관련되어 있지 않은 시스템 상태의 변화에도 반응할 수 있어야 한다. 급격한 변화를 예외적인 제어흐름이라고 부른다. 예외적인 제어흐름은 컴퓨터 시스템의 모든 수준에서 발생한다. 8.1 예외 상황 예외 상황은 부분적으로는 하드웨어와 운영체제에 의해서 구현된 예외적인 제어흐름의 한 가지 형태다. 예외 상황은 어떤 프로세서 상태의 변화에 대한 대응으로, 제어흐름의 갑작스런 변화다. 프로세서가 이벤트가 발생했다는 것을 감지하면, 예외 테이블이라고 하는 점프 테이블을 통해서 이 특정 종류의 이벤트를 처리하기 위해 특별히 설계 된 운영체제 서브루틴(예외처리 핸들러)으로 간접 프로시저 콜을 하게된다..

728x90