숫자가 적힌 카드로 게임을 한다.번갈아 가며 카드를 내는데 상대가 내는 카드보다 큰 카드를 내야하며, 낼 수 있는 카드 중에 가장 작은 카드를 내는 전략을 사용한다.내가 가진 카드의 종류와 상대가 내는 카드의 순서가 입력으로 주어질 때내는 카드의 순서를 출력한다.한 번
그동안은 TIL을 쓰면서 배운 일자마다 글을 썼었다.그런데 일자별로 쓰니까 같은 주제여도 너무 파편화 되어 앞으로는 주제마다 글을 써야겠다.아래 내용은 TIL로 이미 올라온 CSAPP의 내용들을 하나로 합친 것으로 빠진 챕터들이 꽤 있다.책을 내가 이해한 내용으로 적은
1. 개요 1.1. 배경 크래프톤 정글 입소 직후 시작된 3일 간의 미니 웹 프로젝트입니다. 동기들끼리 서로의 교육장 입실 여부와 공부 시간을 확인하며 공부 의지를 북돋우자는 취지로 만든 웹서비스입니다. 1.2. 작업 기간 7. 1.- 2024. 7. 3. 3인 팀 개발 1.3. 사용한 기술 Flask, Jinja2, Bulma 2. 기능 출석을 체크하고...
1. 개요 사내 메신저에 이모티콘 관련 부가기능을 제공하는 파이썬 프로그램 1.1. 배경 사내 메신저에는 이모티콘의 수가 극히 적었습니다. 수동으로 추가할 수 있었으나 복잡하고, 상대방도 같은 방식으로 추가해야만 사용할 수 있었습니다. 모두가 쓸 수 있도록 쉽게 추가
비관계형 DB 중 키-값 DB는 관계형 DB와 비슷해 보인다.차이점에 대한 chatgpt의 답변:관계형 데이터베이스(RDB)와 키-값 데이터베이스의 차이는 주로 데이터 구조, 쿼리 방식, 확장성, 유연성 등에서 나타납니다. 아래에서 주요 차이점을 설명할게요.관계형 데이
세그멘테이션 또는 페이징을 적용하여 동적 재배치에 비해 내부 단편화를 줄였다.그럼에도 불구하고 실제 시스템에서는 여러 프로세스들이 사용하는 페이지를 모두 물리 메모리에 탑재하기에는 물리 메모리 공간이 모자란 경우가 대부분이다.이런 물리 메모리 공간의 한계를 극복하기 위
페이징 방식의 가장 큰 단점은 페이지 테이블을 참조하는 과정에서 다시 메모리에 접근해야 한다는 것이다.즉, 페이지 테이블에 접근->물리 주소로 번역->메모리에 접근과 같이 원하는 메모리에 접근하기 위해 메모리를 적어도 두 번 참조해야 하며 이는 큰 성능 저하를 유발한다
세그멘테이션과 페이징을 설명하기 전 먼저 고전적이고 기초적인 가상주소할당방식을 이야기해야 한다.동적 재배치 dynamic relocation 또는 베이스와 바운드 base and bound라고 불리는 방식은 베이스 레지스터와 바운드 레지스터를 이용해서 가상 주소공간을
세마포어로 자식스레드가 종료되기까지 대기하도록 구성했다.스레드 exit에서는 새로 스케줄링하기 전에 세마포어를 up시켜서 대기하는 부모스레드가 스레드가 종료되었음을 알 수 있도록한다.자식스레드가 모두 종료되기 전, 세마포어를 up하면서 부모스레드로 cpu를 양보하는 상
핀토스 프로젝트2 시스템콜 구현 중시스템 콜 구현 중 파일 읽기 시 lock을 사용한 코드를 보았다.Pintos에서는 lock이 굳이 필요가 없을 것 같아서 생각을 정리해보았다.lock이 필요한 이유: 프로세스 내에서 파일 디스크립터마다 위치가 존재한다. read함수는
PintOS(핀토스)는 교육 목적으로 설계된 운영 체제(OS) 커널이다.정글 8주차부터는 핀토스에서 필요한 기능을 구현하며 운영 체제의 핵심 개념을 학습한다.\[\[CSAPP출처: https://eun-jeong.tistory.com/17 흔들리며 피는 꽃:티
핀토스는 아직은 단일 프로세스로 진행된다.main 함수라는 하나의 문맥 안에 멀티쓰레드로 프로그램을 실행한다.즉, os는 여러 개의 쓰레드를 관리해야한다.핀토스는 한 번에 하나의 스레드만을 실행하기 때문에 실행되는 스레드를 제외하고는 모두 비활성화된다. 다음 실행할 스
UDP와 TCP는 모두 전송 계층에서의 프로토콜로, 전송 계층부터는 각 프로세스가 직접 통신할 수 있다.하위 계층을 거쳐 호스트까지 도착한 데이터가 어떤 프로세스로 찾아가야 하는지 구분하기 위해서 포트 번호를 사용한다. 포트 번호는 16비트 길이의 부호 없는 정수이다.
모든 네트워크 응용 프로그램은 클라이언트-서버 모델에 기초한다.이 모델에서 응용(Application)은 한 개의 서버 프로세스와 여러 개의 클라이언트 프로세스로 구성된다.^11-1클라이언트-서버 모델에서 근본적인 작업은 트랜잭션 transaction이다.트랜잭션은 클
매일 문제 풀이 1. 웜홀(백준 1865번) 주어진 그래프에서 비용이 줄어들면서 출발 위치로 돌아오는 것이 가능하면 YES, 불가능하면 NO를 출력하는 문제. 비용이 줄어든다는 것은 결국 음수 비용이라는 말이고, 출발 위치로 돌아오는 것이 가능하다는 것은 그 경로를 반
매일 문제 풀이 1. 빗물(백준 14719) 벽의 모양이 주어지면 담길 수 있는 빗물의 칸 수를 출력하는 문제. 2차원 정보로 주어졌다면 아래에서 부터 행마다 둘러싸인 칸 수만을 더하면 된다. 하지만 문제는 특이하게 벽의 정보가 2차원으로 주어지지 않고 왼쪽부터 벽의
묵시적 가용 리스트, naive 명시적 가용 리스트 구현 중 생긴 오류는 너무 많아 기억도 안 나 패스.분리 가용 리스트(그 중 segregated-fit) 구현 과정에서 발생한 오류만 정리해 봤다.\-> 힙을 확장을 너무 많이해서 최대 힙 크기를 넘아가면 발생한다.\
# 오늘 배운 것들 ## 1. 힙 정렬 그냥 최대(최소)힙 만들어서 루트를 하나씩 빼면 된다. 배열 내에서 최대 값을 맨 뒤로 보내서 제자리 정렬로 구현해야 한다. ## 2. 페이징과 세그멘테이션 세그멘테이션(Segmentation)과 페이징(Paging)은 가상 메모