728x90

크래프톤 129

크래프톤 정글 - 6Week 24.02.22 - 24.02.28 부제 : 타협과 분함

회고 서럽다 서러워 나한테 서럽다!! 지금까지는 회고록으로 내 생각을 조금 적고 TIL을 다시 타이핑하는 식으로 WIL을 작성했는데, 이제부터는 WIL을 바꿔서 작성해보도록 하겠다. KPT 회고를 통해서 앞으로 WIL을 작성할 생각이다. 잘할 수 있을지는 모르겠지만 하다보면 더, 더욱 늘겠지! KPT 회고 Keep, Problem, Try의 약자로 Keep은 잘 한 것, Problem은 아쉬운 것, Try는 K와 P기반으로 무엇을 할지에 대해 작성하는 방법이다. K : 잘 해와서 유지하고 싶은 것 P : 어려움을 느껴서 개선하고 싶은 것 T : 구체적인 시도할 내용 프로젝트 설명 네트워크와 관련된 프로젝트를 해야하는 주였다. echo, tiny, proxy 서버를 구현했어야 했다. echo의 경우 내가 ..

24.02.28 운영체제, 백준

운영체제 2. 프로세스 프로세스는 실행 중인 프로그램으로 정의한다. 운영체제는 CPU를 가상화시켜 환상을 만들어 낸다. 시분할(time sharing)이라고 불리는 이 기법은 원하는 수 만큼 프로세스를 동시에 실행 할 수 있게 한다. 시분할 기법은 CPU를 공유하기 때문에 각 프로세스의 성능은 낮아진다. 운영체제의 지능은 정책(Policy)의 형태로 표현된다. 정책이란 운영체제에서 어떤 결정을 내리는데 사용되는 알고리즘이다. 다수의 실행 가능한 프로그램이 있을 때 운영체제의 스케줄링 정책(Scheduling Policy)이 이러한 결정을 내린다. 2.1 프로세스의 개념 운영체제는 실행 중인 프로그램의 개념을 제공하는데, 이를 프로세스라 한다. 프로세스의 구성요소를 이해하기 위해 하드웨어 상태(machin..

크래프톤 정글 - CSAPP를 읽어야 하는 이유

컴퓨터 시스템이라고 하는 책 CSAPP 2,4,5장은 아직 안읽었지만 나머지를 다 읽은 기념에서 잡담을 하나 끄적여본다. 일단 본인은 비전공자 출신의 개발자 지망생이다. 크래프톤 정글을 하기 전에 아에 개발을 안해봤냐? 하면 그것은 아니다. 공과대학 학부연구생으로 랩실에서 딥러닝관련 공부와 대학원하고 취업중에서 고민을 하고있었다. 그러다가 갑자기 게임을 너무 만들고 싶어져서 길을 틀어버렸다. 아무튼, 여튼, 쨋든, C는 미니미하게 학교에서 수업으로 맛만 봤었고, 파이썬은 그래도 끄적이는 정도로 사용했었다. 짜투리 같은 지식은 많았던 것 같다. 아무래도 뭔가 계속 배우고 세미나는 진행했으니까. 게임으로 진로를 바꾼 이유 중 게임을 너무 만들고 싶고, 그러한 이유도 있었지만 그 당시 매너리즘? 슬럼프에 빠져..

잡담 2024.02.28

24.02.27 퀴즈, 간단한 정리, 백준, KEYWORD

퀴즈 1. HTTP GET 요청과 POST 요청의 가장 큰 차이점은 무엇이며, 이것이 요청 헤더나 데이터 전송에 어떤 영향을 미치는가? GET요청은 데이터를 URL의 일부로 전송하지만 POST 요청은 데이터를 요청 본문에 포함한다. GET 요청은 URL 길이에는 브라우저나 서버에 따라 제한이 있다. 이로인해 전송할 수 있는 데이터의 양이 제한된다. POST 요청은 ‘Content-Length’와 ‘Content-Type’ 같은 추가적인 헤더 정보를 필요로 한다. 2. HTTP 응답 코드 404의 의미는 무엇인가? 그리고 서버가 요청을 처리할 수 없을 때 반환하는 HTTP 상태 코드는 무엇인가? HTTP 응답 코드 404는 ‘Not Found’를 의미합니다. 이 코드는 서버가 요청된 리소스를 찾을 수 없을..

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.20 퀴즈, CSAPP, 백준

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

24.02.19 CSAPP, 백준, Keyword

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

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

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

728x90