728x90

크래프톤정글 65

24.02.26 간단한 정리, 백준

간단한 정리 11. 네트워크 프로그래밍 11.1 클라이언트 - 서버 프로그래밍 모델 모든 네트워크 응용 프로그램은 클라이언트 - 서버 모델에 기초하고 있다. 이 모델을 사용해서 응용은 한 개의 서버 프로세스와 한 개 이상의 클라이언트 프로세스로 구성된다. 서버는 일부 리소스를 관리하고, 이 리소스를 조작해서 클라이언트를 위한 일부 서비스를 제공한다. 클라이언트 - 서버 모델에서 근본적인 연산은 트랜잭션이다. 트랜잭션의 네 가지 단계 클라이언트가 서비스를 필요로 할 때, 클라이언트는 한 개의 요청(request)을 서버에 보내는 것으로 트랜잭션을 개시한다. 서버는 요청을 받고, 해석하고, 자신의 자원들을 적절한 방법으로 조작한다. 서버는 응답(response)을 클라이언트로 보내고, 그 후 다음 요청을 기..

24.02.25 운영체제, 백준, KEYWORD

운영체제 운영체제 개요 프로그램은 매우 단순한 일을 한다. 명령어를 반입(fetch)하고, 해석(decode)하고, 실행(execute) 한다. 명령어 작업을 완료한 후, 프로세서는 다음 명령어로 또 그 다음 명령어로 프로그램이 완전히 종료될 때까지 실행을 계속한다. 운영체제는 가상화(virtualization)라고 불리는 기법을 사용한다. 운영체제는 프로세서, 메모리, 또는 디스크와 같은 물리적인 자원을 이용해서 일반적이고, 강력하고, 사용이 편리한 가상형태의 자원을 생성한다. 때문에 운영체제를 가상머신(virtual machine) 이라고 한다. 사용자 프로그램의 프로그램 실행, 메모리 할당, 파일접근과 같은 가상머신과 관련된 기능들을 운영체제에게 요청할 수 있도록, 운영체제는 사용자에게 API를 제..

24.02.24 간단한 정리, 백준, KEYWORD

간단한 정리 10. 시스템 수준 입출력 입출력은 메인메모리와 디스크 드라이브, 터미널, 네트워크 같은 외부 장치들 간에 데이터를 복사하는 작업이다. 입력연산은 입출력 장치에서 메인메모리로 데이터를 복사하고, 출력연산은 데이터를 메모리에서 디바이스로 복사한다. 모든 언어의 런타임 시스템은 입출력을 수행하기 위한 고급 기능들을 제공한다. 10.1 리눅스에서 파일은 연속된 m개의 바이트다. 네트워크, 디스크, 터미널 같은 모든 I/O 디바이스들은 파일로 모델링되며, 모든 입력과 출력은 해당 파일을 읽거나 쓰는 형식으로 수행된다. Unix I/O를 통해 모든 입력과 출력이 통일된 방식으로 수행되게 해준다. 파일열기 응용은 I/O 디바이스에 접근하겠다는 의도를 해당 파일을 열겠다고 커널에 요청하는 방법으로 알린다..

24.02.23 CSAPP, 백준, KEYWORD

CSAPP 10. 시스템 수준 입출력(System - Level I/O) 입출력은 메인메모리와 네트워크, 디스크 같은 외부장치들 간에 데이터를 복사하는 작업이다. 입력연산은 입출력 장치에서 메인메모리로 복사하고, 출력연산은 데이터를 메모리에서 디바이스로 복사한다. 왜 UNIX I/O를 배워야 하는가? UNIX I/O를 이해하면 다른 시스템 개념을 이해하는데 도움이 된다. 때로는 UNIX I/O 이외의 다른 방법이 없을 수도 있다. 10.1 Unix I/O 리눅스에서 파일은 연속된 m개의 바이트다. 네트워크, 디스크, 터미널 같은 모든 I/O 디바이스들은 파일로 모델링되며, 모든 입력과 출력은 해당 파일을 읽거나 쓰는 형식으로 수행된다. Unix I/O를 통해 모든 입력과 출력이 일정하고 통일된 방식으로 ..

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

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

24.02.19 CSAPP, 백준, Keyword

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

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

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

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

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

크래프톤 정글 - 코드리뷰에 대해

코드리뷰에 대해 꼭 한번은 들어보면 좋을 것같은 강의 추천추천~ 코드리뷰가 왜 중요할까? 이걸 어떻게 해야할까? 코드리뷰는 어떤식으로 진행되고 뭐가 필요할까 많은 고민을 해결해 줄 수 있었다. TEST-Drive Development - 테스트가 기본이다. 요구사항과 구현을 분리하라 테스트는 언제나 코드와 싱크되어 있다. no test, no source code 자잘하게 많이 커밋해라 Pair Programming - 선배 어깨 너머로 배우기 둘이 나란히 한 컴퓨터로 프로그래밍 실력이 정말 빠르게 증가한다. Code Review - 이해하기 쉽고, 유지보수하기 쉽게 꼭 필요한 한 단계이다. 당신의 동료로 부터 내 코드를 피드백 받는 것을 의미한다. It is not about code review 소프..

잡담 2024.02.16

24.02.15 간단한 정리, 백준

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

728x90