분류 전체보기 557

[쉽게 배우는 운영체제] 6. 교착 상태

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요교착 상태2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리는 무한루프에 빠진 상태여러 프로세스가 함께 작업을 수행하다 보니 자연스럽게 일어나는 문제OS는 감시를 하다 교착상태가 발생하면 강압적으로 해결해야 함 발생구분설명시스템 자원다른 프로세스와 공유할 수 없는 자원(예: 프린터, 레코더 등)을 사용할 경우, 한 프로세스가 자원을 점유한 상태에서 다른 프로세스가 해당 자원을 기다리면 교착 상태 발생 가능공유 변수공유 변수가 적절히 동기화되지 않으면, 특정 프로세스가 무한 대기 상태에 빠질 수 있음 (예: 잘못된 락 관리로 인한 데드락)응용 프로그램데이터베이스에서 특정 데이터에 락을 걸어 다른 트랜잭션이 접근하지 못하는 경..

OS 2024.12.12

[쉽게 배우는 운영체제] 5-1. 프로세스 동기화: 임계 영역

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 프로세스 간 통신종류같은 호스트에서 프로세스 간 통신구분설명특징예시공유 메모리여러 프로세스가 같은 메모리 공간을 공유하여 데이터를 주고받는 방식- 빠른 속도 (커널 개입 없이 직접 접근 가능) - 동기화 필요 (뮤텍스, 세마포어 등)- 생산자-소비자 모델에서 공유 메모리를 이용해 데이터 전달 - POSIX shmget(), shmat() 사용파일프로세스가 파일을 읽고 쓰는 방식으로 데이터 공유- 지속성이 있음 (프로세스 종료 후에도 유지) - 속도가 느림 (디스크 입출력 필요)- 로그 파일을 여러 프로세스가 공유하여 기록 - open(), read(), write() 활용파이프한 프로세스가 데이터를 쓰면, 다른 프로세스가 읽는 방식 (..

OS 2024.12.12

[쉽게 배우는 운영체제] 4-2. CPU 스케줄링: 인터럽트 처리

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 이벤트 드리븐시스템이나 애플리케이션에서 발생하는 이벤트를 중심으로 동작하는 방식입출력 장치는 자신의 작업이 완료되면, 인터럽트 신호를 발생시켜 CPU에 작업을 요청함이벤트 발생 시, 콜백 함수가 호출되어 이벤트가 처리됨 비동기적 방식여러 이벤트가 동시에 발생해도, 각 이벤트를 각각의 스레드에서 처리함다른 이벤트에 영향을 미치지 않음 2. 인터럽트종류구분동기적 인터럽트비동기적 인터럽트설명실행 중인 명령어로 인해 발생하드웨어 오류 또는 입출력 장치에 의해 발생원인프로세스의 문제 또는 의도적 중단하드웨어 요청 또는 외부 이벤트발생 시점명령어 실행 중 특정 조건 충족 시프로그램 실행과 관계없이 트리거됨처리 방식명령어 실행과 밀접하게 연관됨실행..

OS 2024.12.12

[쉽게 배우는 운영체제] 4-1. CPU 스케줄링: 스케줄링

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 스케줄링 단계스케줄링 단계설명주요 역할고수준 스케줄링전체 작업 수 조절 및 동시에 실행 가능한 프로세스의 총 개수를 제한하는 단계실행 대기열에 추가할 프로세스 결정시스템의 작업 개수 조절중간 수준 스케줄링시스템의 활성 프로세스 수를 조절하는 단계메모리 자원 관리와 시스템 부하를 조절활성 프로세스 수 조절메모리 자원 관리스왑 처리저수준 스케줄링준비 상태에 있는 프로세스 중에서 어떤 프로세스를 실행할지 결정하는 단계스케줄링 알고리즘을 사용하여 CPU 자원을 최적화하며 상태 간 전환을 관리준비 상태 프로세스 선택CPU 자원 할당 최적화상태 간 전환 관리 2. 저수준 스케줄링종류스케줄링 종류설명특징선점형 스케줄링OS가 실행 중인 프로세스의 C..

OS 2024.12.12

[쉽게 배우는 운영체제] 3-2. 프로세스와 스레드: 스레드

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 스레드프로세스 내에서 실행되는 작업 단위같은 프로세스 내에서 메모리와 자원을 공유 (Light Weight Process)서로 간에 직접적으로 데이터를 주고받을 수 있음데이터를 공유하므로 메모리를 효율적으로 사용할 수 있음 2. 멀티 태스킹 vs 멀티 스레딩항목멀티 태스킹멀티 스레딩정의CPU 할당 시간을 시분할하여 여러 작업을 동시에 처리하는 기법 (시분할 시스템).단일 프로세스 내에서 여러 개의 스레드를 생성하여 병렬 처리하는 방식. (스레드 단위로 스케줄링이 이루어짐)목표여러 작업을 동시에 처리하는 것처럼 보이게 함.단일 프로세스 내에서 여러 스레드를 사용하여 병렬 처리.구현 방식운영체제가 여러 프로세스를 관리하며 각 프로세스에 시..

OS 2024.12.12

[쉽게 배우는 운영체제] 3-1. 프로세스와 스레드: 프로세스

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 개요프로그램 vs 프로세스구분프로그램프로세스정의어떤 데이터를 사용하여 어떤 작업을 할지 절차를 적어놓은 것작업이 진행되고 있는 프로그램상태정적인 상태 (저장장치에 저장됨) 동적인 상태 (메모리에 올라와 실행 중)저장 위치디스크(SSD, HDD) 등에 저장됨RAM(메모리)에 적재되어 실행됨실행 여부실행되지 않음실행 중인 상태예시myapp.exe (실행 파일)myapp.exe가 실행되어 프로세스 ID를 가지고 동작하는 상태 프로세스로의 전환프로그램을 메모리에 로드PCB 생성구분설명정의프로세스를 관리하기 위한 핵심 데이터 구조주요 정보- PID (Process ID): 프로세스의 고유 식별자 - Process state: 현재 상태 (실행,..

OS 2024.12.11

[고급 알고리즘] Dynamic Programming: Prefix Sum

1. Prefix Sum0~i까지 구간의 합 2. Suffix Sumn~i까지 구간의 합 3. Target SubtotalKadane's Algorithm최대 부분 배열 합을 효율적으로 찾기 위한 알고리즘 동적 프로그래밍i번째 까지 원소의 최대 배열 부분 합을 관리dp[i-1] + 현재 방문한 원소 or 현재 방문한 원소 대소 비교를 통해 dp[i]를 갱신해감 시간복잡도O(n)최대값을 선형으로 찾을 수 있음  출처Wiki - Prefix SumWiki - Maximum subarray problem

Algorithm 2024.11.20

[고급 알고리즘] Dynamic Programming: Edit Distance

1. Edit Distance두 문자열 간의 최소 편집 거리를 계산하는 문제입니다.한 문자열을 다른 문자열로 변환하기 위해 필요한 최소 편집 연산의 수를 의미합니다. 연산삽입: 문자 삽입삭제: 문자 삭제교체: 한 문자를 다른 문자로 교체DP 테이블 정의dp[i][j]i~j까지 최소 편집 연산 수 점화식A[i-1]  == B[j-1]dp[i][j] = dp[i-1][j-1]문자가 같으므로 편집 필요 없음 A[i-1]  != B[j-1]삽입, 삭제, 교체 중, 최소값을 선택삽입A에 문자를 삽입하여 B와 같아지게 함 dp[i][j-1] + 1삭제A에 문자를 삭제하여 B와 같아지게 함 dp[i-1][j] + 1교체A의 문자를 다른 문자로 교체하여 B와 같아지게 함dp[i-1][j-1] + 1  출처Wiki -..

Algorithm 2024.11.20

[고급 알고리즘] Dynamic Programming: Palindrome

1. Longest Palindrome Substring (LPS)주어진 문자열의 부분문자열에서 가장 큰 팰린드롬 문자열의 길이 구하기 Dynamic Programming시간 복잡도: O(n^2)공간 복잡도: O(n^2)더보기public static void main(String... args) throws IOException { br = new BufferedReader(new InputStreamReader(System.in)); bw = new BufferedWriter(new OutputStreamWriter(System.out)); input = br.readLine().toCharArray(); size = input.length; isPalindrome = new..

Algorithm 2024.11.20

[기초 알고리즘] 수학: 모듈러

3. 모듈러컴퓨팅에서 한 숫자를 다른 숫자로 나눈 후, 나머지를 반환한 값 a mod n(유클리드 나눗셈의) 나머지a: 피제수n: 제수a mod b = a - b * (a/b) 성질덧셈 법칙뺄셈 법칙곱셈 법칙분배 법칙 응용큰 수 연산암호학해시 함수: 데이터를 고정된 크기의 값으로 매핑할 떄 사용됨주기성 확인: 반복되는 패턴을 찾는 데 사용됨 고급페르마의 소정리소수로 모듈러 연산하였을 때 결과를 구하는 공식소수 p와 p에 나누어 떨어지지 않는 정수 a가 있을 때a^(p) = a (mod p)a^(p-1) = 1  (mod p)a^(p-2) = 1/a  (mod p)a^(p-2)는 a의 모듈러 역원a * a^(p-2) = 1 (mod p) 이므로 a^-1 (mod p) = a^(p-2) (mod p) 확장 ..

Algorithm 2024.10.26