[OS] 시스템 콜(System Call)
·
Computer Science/Operating System
운영체제는 왜 하드웨어 접근을 막을까?운영체제는 컴퓨터의 자원을 보호하기 위해 프로그램이 하드웨어(CPU, 메모리, 디스크 등)에 직접 접근하는 것을 막는다.만약 모든 프로그램이 아무런 제약 없이 하드웨어에 접근할 수 있다면 어떻게 될까?자원의 무질서한 관리: 여러 프로그램이 동시에 메모리의 같은 공간에 데이터를 쓰려고 하거나, 하드 디스크의 특정 파일을 마음대로 삭제할 수 있다.시스템 전체의 불안정성: 한 프로그램의 실수가 전체 컴퓨터 시스템에 치명적인 영향을 줄 수 있다. 예를 들어, 잘못된 메모리 접근으로 인해 운영체제 자체가 멈출 수 있다.이러한 문제를 방지하기 위해, 운영체제는 자신을 통해서만 하드웨어 자원에 접근하도록 통제한다.프로그램은 필요한 작업이 있을 때 운영체제에 도움을 요청하고, 운영..
[CS] 컴퓨터 구조 한눈에 정리-01
·
Computer Science
소프트웨어 계층운영체제란?하드웨어 자원을 관리하고 응용 소프트웨어가 실행될 수 있는 기반을 제공한다.예) Windows의 작업 관리자로 프로세스·메모리 점유율 확인.응용 소프트웨어란?OS 위에서 구동되는 사용 목적 중심 프로그램.예) Microsoft Office, Chrome / Edge / Firefox.하드웨어 계층CPU — “컴퓨터의 두뇌”구성역할예시ALU덧셈·AND/OR 등 산술·논리 연산5 + 3 → 8CU명령어 인출→해석→실행 지휘“ADD R1,R2”를 ALU에 전달레지스터초고속 작업 공간EAX = 0x1A3FL1/L2/L3캐시RAM과 CPU 속도 차 완화자주 쓰이는 데이터 임시 저장TIP : 현대 CPU는 캐시·파이프라인·레지스터로 성능을 끌어올린다.기억장치분류특징대표 예시RAM속도 빠름,..
[OOP] SOLID 다섯 가지 설계 원칙
·
Computer Science/Design Pattern
1. SOLID란?운영체제 관점에서 ‘컨텍스트 스위칭’이 CPU 자원을 효율적으로 쓰기 위한 규칙이라면,SOLID는 객체지향 코드의 “자원(의존성) 관리 규칙”이다.Robert C. Martin(삼촌 밥)이 2000년대 초 정리한 다섯 가지 원칙으로, 목표는 단 하나다.“변화에 안전한 코드”유지보수 → 버그 수정 시 영향 범위 최소화확장성 → 새 기능을 붙일 때 기존 코드 수정 최소화테스트 용이성 → 단위 테스트 격리, Mock 삽입 용아래에선 각 원칙을 정의 → 장·단점 → 대표 위반/준수 코드 순서로 살펴본다.2. 단일 책임 원칙 (SRP)“클래스(또는 모듈)는 오직 하나의 변경 이유만 가져야 한다.”운영체제에서 PCB·TCB를 분리해 부담을 줄이듯,소프트웨어도 변경 요인을 분리해 부담을 줄인다.왜 ..
[백준] 12014번 - 주식 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/12014난이도 : G2Tag : DP풀이 일자 : 2025-06-08문제 탐색하기총 N일간의 주식 가격이 주어집니다.K번 주식을 사야 하며, 첫 매수 이후에는 반드시 이전 매수보다 가격이 오른 날에만 살 수 있습니다.조건N일 동안의 주식 가격이 주어짐 (1 ≤ N ≤ 10,000)K번의 매수 진행 (1 ≤ K ≤ 10,000)첫 매수 이후로는 반드시 직전보다 비싼 날에만 매수 가능가능한 시간복잡도단순 DP로 풀면 O(N^2)주어진 최대 범위 N=10,000이라면, Java 기준으로도 1억 연산하지만 테스트 케이스 수(T ≤ 100) 고려 시 통과 가능알고리즘 선택기본적으로는 Longest Increasing Subsequence (LIS) 문제입..
[백준] 9328번 - 열쇠 java
·
Algorithm/Baekjoon
문제 탐색하기상근이는 빌딩에 침입해 가능한 한 많은 문서를 훔쳐야 합니다.빌딩 내부에는 벽, 문, 열쇠, 문서 등이 있으며, 열쇠를 이용해 문을 열고 이동할 수 있습니다.상근이는 빌딩 외부에서 시작하여 빈 공간을 통해 내부로 진입하며, 문을 통과하려면 해당 문에 맞는 열쇠가 필요합니다.조건 • . : 빈 공간 • * : 벽 (이동 불가) • $ : 문서 • 'A' ~ 'Z' : 문 (해당 문자의 소문자 열쇠가 필요) • 'a' ~ 'z' : 열쇠 (해당 문자의 대문자 문을 열 수 있음)추가 조건 • 상근이는 빌딩 외부에서 시작하며, 가장자리의 빈 공간을 통해 진입 가능 • 열쇠는 여러 번 사용 가능 • 열쇠 없이 문을 만나면 해당 위치는 기억해두고, 나중에 열쇠를 얻으면 방문 재시도⸻가능한 시간복잡도 ..
[백준] 2638번 - 치즈 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/2638난이도 : G3Tag : BFS + 구현풀이 일자 : 2025-06-01문제 탐색하기치즈가 놓인 2차원 격자가 주어졌을 때, 매 시간마다 외부 공기와 접촉한 치즈 격자가 녹아 사라집니다.모든 치즈가 녹아 없어지는 데까지 걸리는 시간을 구하는 문제입니다.조건치즈는 1, 공기는 0으로 주어짐녹는 기준: 해당 치즈 칸의 4변 중 2변 이상이 외부 공기(실내 온도)와 접촉하면 1시간 후 녹음내부 공기는 외부 공기와 닿아있지 않기 때문에 치즈를 녹이지 않음격자의 가장자리는 치즈가 놓이지 않음 → (0,0)은 항상 외부 공기입력: 5 ≤ N, M ≤ 100가능한 시간복잡도매 시간마다 아래 작업이 반복됩니다:BFS로 외부 공기 탐색 → O(N×M)모든 ..
[백준] 9019번 - DSLR java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/9019난이도 : G5Tag : BFS풀이 일자 : 2025-05-31문제 탐색하기숫자 a와 b가 주어졌을때 4개의 명령어 D,S,L,R을 이용해 a를 b로 만드는 최소횟수의 명령어를 구하면 됩니다.D : n을 두 배로 바꾼다. (결과값이 9999이상이면 10000으로 나눈 나머지를 취한다.)S : n에서 1을 뺀 결과 n-1을 레지스터에 저장한다. (n이 0이라면 9999저장)L : n의 각 자릿수를 왼편으로 회전시켜 그 결과를 레지스터에 저장한다. (1234 -> 2341)R : n의 각 자릿수를 오른편으로 회전시켜 그 결과를 레지스터에 저장한다. (1234 -> 4123)조건레지스터에는 0 이상 10000 미만의 십진수만 저장됩니다.명령어 ..
[백준] 14890번 - 경사로 java
·
Algorithm/Baekjoon
https://www.acmicpc.net/problem/14890난이도 : G3Tag : 시뮬레이션(구현)풀이 일자 : 2025-05-28문제 탐색하기N×N 크기의 지도에서, 각 행과 각 열이 "지날 수 있는 길"인지 확인하는 문제입니다.길을 지나기 위한 조건은 다음과 같습니다:모든 칸의 높이가 같거나,높이 차가 1이고 경사로 설치 조건을 만족해야 합니다.조건경사로 길이: L경사로 설치 조건:낮은 칸에만 설치 가능높이 차는 1이어야 함낮은 칸이 연속으로 L칸 있어야 함경사로가 겹치면 안 됨설치 범위를 벗어나면 안 됨가능한 시간복잡도각 행과 열마다 길인지 확인 = 2×N한 행/열은 O(N) 탐색→ 총 시간복잡도: O(N²) (N ≤ 100 → 최대 10,000번 연산)→ 시간 제한 2초 이내 충분히 해결..