Journey to CS/KNOU CS 24

[자료구조] 스택(stack)을 이용하여 중위 표기식을 후위 표기식으로 변환해보자

프로그래밍 언어나 컴파일러 이론을 공부하다 보면 후위 표기식(Postfix notation)이라는 개념이 자주 등장하는 것을 볼 수 있습니다. 컴퓨터가 수식을 계산하는 방식은 우리가 흔히 사용하는 중위 표기식(Infix notation)과는 조금 다릅니다. 중위 표기식은 연산자가 피연산자 사이에 위치해 있어 사람에게는 직관적이지만, 컴퓨터가 처리하기 위해서는 연산자 우선순위와 괄호 등을 복잡하게 고려해야 하죠.이러한 문제를 해결하기 위해 사용되는 것이 바로 후위 표기식(Postfix notation)입니다. 후위 표기식은 연산자가 피연산자 뒤에 위치하며, 괄호가 필요 없고 연산자 우선순위를 고려하지 않고도 순서대로 계산할 수 있다는 장점이 있습니다. 그렇다면 중위 표기식을 후위 표기식으로 어떻게 변환할까..

[DBS] 트랜잭션 - Part3. 타임스탬프 기반 트랜잭션 동기화 규약

🕒 타임스탬프 기반 규약이란?타임스탬프 기반 규약은 데이터베이스 시스템에서 여러 트랜잭션이 동시에 실행될 때 충돌 없이 안전하게 작동하도록 해주는 규칙이다.이 규약은 각 트랜잭션과 데이터 항목에 타임스탬프를 부여하고, 이 타임스탬프를 기준으로 읽기(Read)나 쓰기(Write) 연산의 허용 여부를 판단한다. 타임스탬프 설정TS(Ti): 트랜잭션 Ti가 시작될 때 부여받는 타임스탬프. 값이 작을수록 먼저 시작된 트랜잭션이다.각 데이터 항목 A는 다음과 같은 정보를 가진다:R-TS(A): 지금까지 A를 읽은 트랜잭션 중 가장 큰 타임스탬프 (가장 최근에 A를 읽은 트랜잭션의 TS)W-TS(A): 지금까지 A를 쓴 트랜잭션 중 가장 큰 타임스탬프 (가장 최근에 A를 쓴 트랜잭션의 TS)Read(A) 규칙트랜..

[운영체제] 가상메모리와 주소 변환 - Part4. 페이징/세그먼테이션 혼용기법

앞의 두 글 Part2, Part3에서 페이징 기법에 대해 살펴보았다. 이번 글에서는 세그먼테이션의 개념과, 페이징과 세그먼테이션을 혼용한 메모리 관리 기법에 대해 다뤄보도록 한다. 세그먼테이션이란? 세그먼테이션은 메모리를 **논리적인 단위(세그먼트)**로 나누는 방식이다.프로그램은 보통 여러 영역으로 구성되는데, 예를 들어 다음과 같은 영역들이 있다.코드 영역데이터 영역스택 영역세그먼테이션은 이 각각을 별도의 세그먼트로 분리하여, 각 영역을 독립적으로 관리할 수 있도록 해준다.이 방식의 장점은 다음과 같다:논리적 구조를 명확하게 표현 가능각 세그먼트의 크기가 가변적이라 필요한 만큼만 메모리 할당 가능메모리 보호, 공유, 동적 확장 등 고급 기능에 유리하지만 단점도 있다. 단편화(fragmentatio..

[운영체제] 가상메모리와 주소 변환 - Part3. 연관/직접사상의 동적 주소변환 과정

앞선 글 Part2에서 페이지 사상표를 이용하여 동적 주소변환을 하는 직접사상에 대해 알아보았다. 이번 글에서는 주소변환의 또 다른 방식인 연관사상(associative mapping) , 그리고 연관사상과 직접사상을 같이 사용하는 연관/직접 사상에 대해 알아보도록 한다. 연관/직접 사상 방식의 주소 변환 흐름가상주소는 (p, d) 형태다.p: 가상 페이지 번호d: 해당 페이지 안에서 몇 바이트 떨어져 있는지 나타내는 변위(오프셋)이 주소를 물리주소 (p′, d)로 변환하는 과정은 다음 두 가지 중 하나로 진행된다. ✅ 1단계: 연관사상표에서 먼저 찾기프로세스가 어떤 변수나 데이터(a)를 참조하는 명령어를 실행한다.CPU가 해당 명령을 실행해 가상 주소 (p, d)를 사용해서 메모리 접근을 시도한다..

[운영체제] 가상메모리와 주소 변환 - Part2. 페이징 기법과 데이터 참조 과정

페이징이란? 페이징(paging)은 운영체제가 가상 메모리와 물리 메모리를 효율적으로 관리하기 위해 사용하는 대표적인 메모리 관리 기법이다. 핵심 아이디어는 메모리를 고정된 크기의 블록(페이지)으로 나누고, 필요한 페이지만 메모리에 적재해서 사용하는 것이다. 지난 Part1 글에서 가상 메모리와 물리 메모리의 개념에 대해 알아보았다. 페이징 기법에 대해 알아보기 전에 간단히 가상메모리와 가상 주소의 개념을 복습해보자. 가상메모리와 메모리 가상메모리는 프로세스(프로그램)가 사용하는 논리적인 메모리 공간이다.실제로는 물리메모리(RAM)와 디스크(보조기억장치)에 걸쳐 존재한다.가상메모리는 고정된 크기의 블록인 페이지(page) 단위로 나뉜다.메모리도 같은 크기의 블록인 페이지 프레임(page frame)으로 ..

[DBS] 트랜잭션 - Part 2. 회복 가능한 스케줄과 비연쇄적 스케줄

지난 글에서는 트랜잭션의 의미와 동작 과정에 대해 살펴보았다. 데이터베이스 시스템에서 트랜잭션의 안정성과 성능을 보장하려면 스케줄의 유형을 이해하는 것이 중요하다. 이번 글에서는 회복 가능한 스케줄과 비연쇄적 스케줄에 대해 알아보자. 회복 가능한 스케줄이란?회복 가능한 스케줄은 트랜잭션 간의 데이터 읽기와 커밋 순서를 고려하는 스케줄이다. 트랜잭션 Tj가 트랜잭션 Ti가 작성한 데이터를 읽었다면, 반드시 Ti가 먼저 커밋을 해야 Tj도 커밋할 수 있다. 이렇게 해야 하나의 트랜잭션이 실패하더라도 데이터베이스를 일관된 상태로 되돌릴 수 있다. 예를 들어, T1이 데이터 A를 수정하고 T2가 그 데이터를 읽은 다음 커밋하는 경우, T1이 먼저 커밋한 후에 T2가 커밋해야 회복 가능한 스케줄이 된다. 반대로..

[운영체제] 단일/다중 프로그래밍 환경에서의 메모리 관리 방식을 비교해 보자

운영체제에서 메모리 관리는 CPU와 함께 시스템 자원을 효율적으로 사용하는 핵심 요소 중 하나다. 메모리를 어떻게 관리하느냐에 따라 시스템의 응답 속도, 자원 활용률, 안정성 등이 크게 달라진다.대표적인 메모리 관리 기법들을 간단하게 살펴보자.연속 메모리 할당초기 운영체제 구조에서는 단일 프로그래밍 환경이 일반적이었고, 이때는 하나의 프로세스만 메모리에 적재되어 실행되었다. 이를 연속 메모리 할당 방식이라고 한다. 구조가 매우 단순하고 구현도 쉽지만, 하나의 프로세스만 실행되기 때문에 메모리의 많은 부분이 낭비되고, CPU도 유휴 상태로 남는 시간이 많다. 이런 비효율을 극복하기 위해 다중 프로그래밍 개념이 도입되었다.메모리 분할다중 프로그래밍 환경에서는 여러 프로세스를 동시에 메모리에 올려놓고 번갈아가..

[운영체제] 환형대기 조건(사이클)을 차단하여 교착상태를 예방하는 방법

운영체제에서 교착상태(Deadlock)는 여러 프로세스가 서로 자원을 점유한 채, 상대가 가진 자원을 기다리면서 무한 대기에 빠지는 현상이다. 교착상태가 발생하려면 다음 네 가지 조건이 모두 동시에 성립해야 한다.상호 배제 (Mutual Exclusion) – 자원은 한 번에 하나의 프로세스만 사용할 수 있다.점유 대기 (Hold and Wait) – 자원을 점유한 상태에서 다른 자원을 요청하며 대기한다.비선점 (No Preemption) – 점유한 자원을 강제로 빼앗을 수 없다.환형 대기 (Circular Wait) – 자원을 기다리는 관계가 원형 고리를 이룬다.교착상태를 막기 위해선 이 중 하나 이상의 조건을 제거하면 된다.그중 환형 대기 조건을 제거하는 방법에 대해 알아보자. 자원에 일련번호(순서..

[이산수학] 조합이론 - Part 4. 점화식

점화식이란? 점화식(Reccurence relation)은 수열에서 항과 항 사이의 규칙을 수식으로 표현한 것이다.즉, 수열의 어떤 항 an​을 앞에 있는 항들 an−1,an−2,…을 이용해서 나타낼 수 있다면, 이 식을 점화식이라고 한다.점화식을 사용하면 수열의 구조를 간단하게 나타낼 수 있고, 반복되는 계산을 체계적으로 처리할 수 있다.예를 들어 수열 1, 4, 7, 10, 13, …은 각 항이 앞 항보다 3만큼 커지는 규칙을 갖고 있다. 이 수열의 점화식은 다음과 같다.이 식은 “첫째 항은 1이고, 그 다음 항은 앞 항에 3을 더해서 만든다”는 뜻이다.***점화식에서 n은 수열의 항 번호를 뜻함. "점화식을 푼다"는 것은?점화식을 푼다는 것은 반복적으로 항을 계산하지 않고,n만 입력해도 곧바로 값을..

[이산수학] 조합이론 - Part 3. 이항정리

이항정리란 ? 수학에서 다항식을 전개할 때 사용하는 중요한 공식 중 하나가 이항정리다.이 공식은 단순히 식을 전개하는 것을 넘어서,선택과 경우의 수라는 조합의 개념이 수학적으로 어떻게 쓰이는지를 잘 보여준다. 가장 간단한 예부터 출발해 보자. 중학교 때 무지성으로 외워서 수능까지 잘 써먹었던 (x + y)2 = x2+2xy+y2 은 사실 조합과 관련이 깊다. ✅ 1단계: 가장 간단한 예부터 출발해 보자먼저 (x + y)2를 전개해보자.이걸 분배법칙으로 전개하면 다음과 같다. 여기서 중요한 점은 xy와 yx가 사실 같은 문자 조합이라는 것이다.즉, 순서만 다를 뿐 둘 다 똑같이 xy라는 항이 되므로 하나로 묶는다.그렇다면 xy라는 같은 문자 조합이 만들어지는 방법은 몇 가지일까?첫 번째 괄호에서 x, 두..

1 2 3