- [ 학습기록/CS 공부 ][OS/공룡책] Part 4. Memory Management2024-04-30 22:03:46keep many processes in memory simultaneously to allow multiprogramming 메인 메모리메모리는 고유의 주소를 갖는 바이트의 배열이다. 각 코어에 들어있는 레지스터와 메인 메모리는 CPU가 직접 접근할 수 있는 유일한 스토리지다. CPU는 PC값에 해당하는 메모리 주소에서 명령어를 가져와 실행하는데, 만약 데이터가 메모리에 없다면 실행 전에 메모리에 적재해야 한다. 메모리 보호we must protect the operating system from access by user processes.우리는 사용자 프로세스로부터 운영체제를 보호해야 한다. 이는 base 레지스터와 limit 레지스터를 이용하여 구현할 수 있다.base 레지스터 : 물리적 메모리의..
- [ 학습기록/CS 공부 ][OS/공룡책] Part 3. Process Synchronization2024-04-27 01:44:58Concurrent access to shared data my result in data inconsistency. 동기화 방법프로세스들은 동시에 실행되거나 서로 다른 코어에서 병렬적으로 실행될 수 있다. 공유 자원에 여러 개의 프로세스가 동시에 접근하는 상황을 경쟁 상태라고 부르는데, 이는 공유 데이터의 무결성을 해칠 수 있다. 따라서 한 번에 하나의 프로세스만 공유 데이터를 조작하도록 접근 순서를 제어해야 한다. (동기화)⭐ 경쟁 상태두 개 이상의 프로세스가 공유 자원에 동시에 접근할 때, 공유 자원에 대한 접근 순서에 따라 그 실행 결과가 달라지는 상황 The Critical-Section Problem임계구역은 다른 프로세스와 공유하는 코드의 일부분을 의미하며, 다음 구조를 갖는다.entry-s..
- [ 학습기록/CS 공부 ][OS/공룡책] Part 2. Process Management2024-04-23 03:20:00One of the most important aspects of an operating system is how it schedules threads onto available processing cores.프로세스A process is a program in execution.프로세스는 실행 중인 프로그램을 의미한다. 프로세스의 활동 상태는 프로그램 카운터와 레지스터의 내용으로 알 수 있다...
- [ 학습기록/CS 공부 ][OS/공룡책] Part 1. Overview2024-04-21 15:50:49운영체제An operating system acts as an intermediary between the user of a computer and the computer hardware.운영체제는 컴퓨터 시스템을 운영하는 소프트웨어로, 컴퓨터 하드웨어를 관리하고 어플리케이션의 실행 환경을 제공한다. 컴퓨터 시스템은 다음 네 가지 요소로 구성되어 있다. 운영체제의 핵심 역할은 프로그램에 필요한 자원을 할당하는 것이다...
- [ 학습기록/cheat sheet ][docker] docker CLI (컨테이너/볼륨/네트워크)2024-03-03 19:15:26컨테이너생성하기: run & createrunUsage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Create and run a new container from an image`run`은 이미지로부터 컨테이너를 생성하고 실행하는 명령어다. 로컬에 이미지가 없는 경우, 도커 이미지를 `pull`한 뒤 컨테이너를 생성`create`하고 시작`start`한다. createUsage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]Create a new container`create`는 이미지로부터 컨테이너를 생성하는 명령어다. `run`과 달리 생성된 컨테이너를 시작하지 않는다.💡 컨테이너의 기본 사용자는 root이며 호스트..
- [ backend/devops ][프로젝트 관리] GitHub Actions로 PR에 라벨, 이슈, 담당자 등록하기2024-02-18 20:44:08PR의 설정들을 활용하면 개발 및 협업 프로세스를 향상시킬 수 있다. 라벨, 이슈, 담당자를 등록함으로써 변경사항을 쉽게 추적할 수 있고, 누가 어떤 작업을 담당하고 있는지 확인할 수 있다. `feature`, `bug` 같은 라벨을 통해 PR의 목적을 빠르게 이해할 수 있으며 우선순위를 판단하는 데에도 도움을 준다. 하지만 PR을 설정하는 과정은 굉장히 번거로운 작업이다. 따라서 자동화된 프로세스를 통해 각 PR에 알맞은 설정 정보를 등록함으로써 개발자가 실제 개발 작업에 집중할 수 있도록 만들 것이다. 🚨 PR을 수동으로 설정하면 실수가 발생할 수 있으므로 자동화된 프로세스를 통해 작업의 정확성을 보장한다. 아래 코드는 액션 파일의 전문이다. PR이 오픈되었을 때 자동으로 설정들을 등록한다. 아래에서..
- [ backend/데이터베이스 ][mysql] 성능 최적화 3편 (데이터 크기)2024-02-13 15:36:22데이터 구조 최적화 테이블을 설계할 때 적절한 데이터 타입을 설정하는 것이 매우 중요하다. 최소한의 데이터 크기를 사용함으로써 테이블이 차지하는 디스크 공간을 최적화할 수 있고, 데이터가 메모리에 로드될 때 메모리 공간을 적게 사용하기 때문에 더 많은 데이터를 캐싱할 수 있다. 데이터 크기 최적화 데이터 크기를 최적화하면 디스크에 저장되는 데이터 양을 줄일 수 있다. 이는 저장소 비용을 절감하고 데이터 전송 시간을 단축시킨다. 테이블 컬럼 최적화 작은 크기의 데이터 타입을 사용하여 디스크 공간과 메모리를 확보한다. 가능한 `NOT NULL`로 선언하여 각 값이 null인지 테스트하는 오버헤드를 제거한다. `TINYINT` `SMALLINT` `MEDIUMINT` `INT` `BIGINT` 바이트 1 2 ..
- [ 학습기록/CS 공부 ][OS] 커널 (모드 비트/시스템 콜/인터럽트)2024-02-12 02:01:35커널은 운영체제의 핵심 프로그램으로, 시스템의 모든 것을 조율하고 제어한다. 커널은 운영체제 코드의 일부로서 메모리에 상주하며, 시스템 시작 시에 가장 먼저 로드된다. 커널의 주요 역할은 다음과 같다. 커널은 하드웨어 자원을 관리한다. 자원을 효율적으로 관리하여 여러 프로세스가 안정적으로 실행되도록 한다. 커널은 프로세스를 관리하여 다중 프로세스 환경에서 각 프로세스가 공정하게 자원을 사용하고 서로 간섭하지 않도록 중재한다. 커널은 프로세스들이 필요로 하는 메모리를 할당하고 해제한다. 커널 주소 공간 (os 상주 영역) 은 커널이 실행되는 메모리 영역을 의미한다. 이 영역은 시스템의 가장 상위에 위치하며, 보호된 메모리 영역에 할당된다. 사용자 프로세스들은 직접 이 영역에 접근할 수 없지만, 시스템 콜을..