CS 12

2. 운영체제 : 가상 메모리

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. 물리 주소와 논리 주소 2. 스와핑과 연속 할당3. 페이징을 통한 가상 메모리 관리4. 페이지 교체 알고리즘 운영체제에서 메모리 관리는 성능과 안정성을 결정하는 핵심 요소이며, 가상 메모리는 물리 메모리의 한계를 극복하기 위해 필요한 핵심 기술이다. 가상 메모리를 통해 실제 물리 메모리(RAM)보다 큰 프로그램도 실행할 수 있는 이유는 주소 변환 구조와 메모리 관리 기법에 있다. 이번 글에서는 이러한 동작 원리를 이해하기 위해 물리/논리 주소의 개념부터 시작하여 페이징 구조, 페이지 테이블의 동작 방식, 그리고 페이지 교체 알고리즘까지 단계적으로 정리하였다. 1. 물리 주소와 논리 주소CPU와 프로세스는 메모리 하..

2. 운영체제 : CPU 스케줄링

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. CPU 스케줄링의 이해2. CPU 스케줄링 알고리즘 컴퓨터의 뇌라고 불리는 CPU는 한 번에 하나의 프로세스만 실행할 수 있다. 하지만 실제로는 여러 프로그램이 동시에 실행되는 것처럼 보이는데, 이는 운영체제가 CPU 사용 시간을 잘게 나누어 여러 프로세스에 배분하기 때문이다. 이처럼 운영체제가 여러 프로세스에 CPU 사용을 효율적으로 분배하는 정책을 CPU 스케줄링(CPU Scheduling)이라고 한다.1. CPU 스케줄링의 이해1-1. 왜 스케줄링이 필요한가 ? 모든 프로세스는 실행 과정에서 다음 두 상태를 반복한다.CPU Burst : 실제 연산을 수행하는 구간 (CPU를 사용하는 시간)I/O Burst :..

2.운영체제 : 프로세스 동기화 과정

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습을 기반으로 한 CS 스터디 기록입니다. 목차1. 동기화란?2. 동기화 기법3. 교착 상태 (Deadlock) 멀티프로세스와 멀티 스레드 환경에서는 여러 실행 흐름이 동시에 동작한다.이때 하나의 공유 자원을 여러 실행 흐름이 동시에 접근하게 되면 예상하지 못한 문제가 발생할 수 있다. 이러한 문제를 해결하기 위한 개념이 바로 동기화(Synchronization)이다.1. 동기화란?동기화란 여러 프로세스 또는 여러 스레드가 공유 자원에 접근할 때 실행 순서를 제어하며 데이터의 일관성을 유지하는 것을 의미한다. 동기화는 다음의 2가지 조건을 준수하며 실행하게 된다. 실행 순서 제어 : 프로세스 및 스레드를 올바른 순서로 실행하기상호 배제 :..

2.운영체제 : 프로세스와 스레드

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. 프로세스란 ?2. 멀티 프로세스와 멀티 스레드3. 프로세스 간 통신 (IPC) 운영 체제에 있어 프로세스와 스레드는 가장 핵심 개념이 된다. 해당 학습 글에서 프로세스의 이해부터 멀티 프로세스와 멀티 스레드의 차이, 그리고 프로세스 간 통신까지 흐름을 정리하였다.1. 프로세스(Process)란?1-1. 프로세스의 개념과 메모리 구조프로세스는 실행 중인 프로그램을 의미한다. 메모리에는 컴퓨터가 실행되는 순간부터 다양한 프로세스들이 적재되어 실행된다. 프로세스의 유형을 막론하고 하나의 프로세스를 구성하는 메모리 내의 정보는 다음과 같이 구성된다. 커널 영역 : PCB사용자 영역 : Stack, Heap, Data,..

2. 운영체제 : 운영체제의 역할과 이해

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. 운영체제의 역할2. 시스템콜과 이중 모드 (User Mode / Kernel Mode) 1. 운영체제의 역할운영체제는 매우 많은 종류와 다양한 기능이 있지만, 제공하는 핵심적인 기능은 유사하다.이러한 핵심적인 기능을 담당하는 부분을 커널이라고 하며,자동차의 엔진과 같은 핵심부라고 할 수 있다. 운영체제의 전체 구조를 살펴보면,사용자는 응용 프로그램을 통해 시스템을 사용하고,그 내부에서 커널이 하드웨어 자원을 관리하며 중간에서 동작한다. 운영체제의 핵심적인 역할은 크게 두 가지로 정리할 수 있다. 프로세스 및 스레드 관리프로세스와 스레드동기화와 교착 상태자원 할당 및 관리CPU 관리 : CPU 스케쥴링메모리 관리..

1. 컴퓨터 구조 : 보조기억장치와 입출력장치

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. 보조기억장치2. 입출력장치 1. 보조기억장치보조기억장치는 전원이 꺼져도 데이터가 유지되는 비휘발성 저장 장치로, 대표적으로 하드 디스크 드라이브(HDD)와 플래시 메모리 기반 저장 장치인 SSD, USB 등이 있다. 1-1. RAID (Redundant Array of Independent Disk)RAID는 데이터의 안정성과 성능을 확보하기 위해 여러 개의 독립적인 보조기억장치를 마치 하나의 논리적인 저장 장치처럼 사용하는 기술이다.RAID를 구성하는 방식은 RAID 레벨이라고 하며, 대표적으로 RAID0부터 RAID6까지 다양한 방식이 존재한다. [1] RAID0RAID0은 데이터를 여러 보조기억장치에..

1. 컴퓨터 구조 : 메모리 (2) 캐시 메모리

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. 캐시 메모리2. 캐시 히트와 캐시 미스3. 참조 지역성의 원리4. 캐시 메모리 쓰기 정책과 일관성 1. 캐시 메모리 (Cache Memory)캐시 메모리는 CPU의 연산 속도와 메인 메모리 접근 속도 간의 차이를 줄이기 위해 만들어진 저장 장치이다. CPU와 메모리 사이에 위치하며빠른 접근 속도를 위해 SRAM 기반으로 구성된다. 1-1. 캐시 메모리 구분캐시 메모리는 CPU 코어와의 거리에 따라 여러 단계로 구분된다. 가장 가까운 캐시 메모리를 L1 캐시(Level 1 Cache)라고 하며, 그 다음으로 가까운 순서대로 L2 캐시, L3 캐시가 존재한다. 일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3 캐..

1. 컴퓨터 구조 : 메모리 (1) RAM

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. RAM의 개념과 종류2. 메모리 데이터 저장 방식 * 해당 글에서 다루지 않는 내용 본 글에서는 RAM 개념 이해에 집중하고, 컴퓨터 구조 전반에 대한 내용은 다루지 않는다. CPU와 메모리 간의 전체적인 작업 흐름 메모리 종류 및 저장 방식과 같은 하드웨어적 세부 사항관련 내용은 컴퓨터 구조 기본을 정리한 이전 글에서 확인할 수 있다. 1. 컴퓨터 구조의 이해 기초해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. 컴퓨터는 어떻게 개발자가 작성한 소스 코드를 이해하는가?2. 컴퓨터를 구성하는 핵심 부품 1. 컴퓨터는 어떻jignonne.tistory.com 1. RAM의 ..

1. 컴퓨터 구조 : CPU (3)

해당 내용은 [CS 기술면접 1] 말이 트이는 컴퓨터 구조를 학습한 기록입니다. 목차1. CPU와 레지스터의 역할2. 인터럽트가 발생하는 이유와 동작 과정 3. CPU 성능 개선 * 해당 학습 글에서 다루지 않는 내용더보기해당 학습 글에선 CPU 성능 개선, 특히 명령어 실행 구조와 파이프라이닝 등을 중심으로 설명한다.따라서 다음과 같은 내용은 다루지 않는다.명령어의 형태 : 연산코드와 오퍼랜드의 내부 구성명령어의 종류 : 데이터 전송, 산술논리연산, 제어 명령어 등오퍼랜드 주소 지정 방식 : 즉시 주소 지정, 직접/간접 주소 지정, 레지스터 주소 지정 등명령어 집합의 종류 : RISC, CISC와 같은 명령어 집합 구조 3. CPU 성능 개선웹 어플리케이션의 성능을 이야기할 때 우리는 흔히 네트워크..

1. 컴퓨터 구조 : CPU (2)

해당 내용은 이것이 컴퓨터 과학이다 with CS 기술면접을 학습한 기록입니다. 목차1. CPU와 레지스터의 역할2. 인터럽트가 발생하는 이유와 동작 과정 3. CPU 성능 개선 2. 인터럽트가 발생하는 이유와 동작 과정CPU 인터럽트(interrupt)는 CPU가 현재 실행 중인 작업을 잠시 중단하고 다른 요청을 처리할 수 있도록 전달되는 신호를 의미한다.인터럽트는 외부 장치에 의해 발생하기도 하고, 프로그램 실행 중 예외 상황을 처리하기 위해 CPU 내부에서 발생하기도 한다. 인터럽트는 크게 (1) 동기 인터럽트(예외)와 (2) 비동기 인터럽트(하드웨어 인터럽트)로 구분된다. 1. 인터럽트 종류(1) 동기 인터럽트 — Synchronous Interrupt / Exception동기 인터럽트는 명령어..