CS 15

CS) 파일 입출력과 버퍼

파일 입출력(File I/O)컴퓨터 내부의 주기억장치와 외부의 보조기억장치 사이에서 데이터가 이동하는 것을 말한다. Input : 보조기억장치에 저장된 파일 데이터를 주기억장치로 읽어오는 것output : 주기억장치에 있는 데이터를 보조기억장치에 저장하는 것 CPU와 주기억장치는 전자의 속도로 일하지만, 보조기억장치는 물리적인 장치라서 상대적으로 속도가 엄청 느리다.이때 버퍼라는 개념을 이용한다. 버퍼(Buffer) 속도 차이가 나는 두 장치 사이에서 데이터 전송 속도를 조절하기 위한 임시 메모리 공간(Ram 영역)이다. CPU가 디스크에 데이터를 1바이트씩 보낼 때마다 디스크가 반응하려면 CPU는 하루 종일 기다려야 한다. 이를 해결하기 위해 버퍼를 둔다. 작동 원리 1. 적재 : 프로그램이 데이터를..

CS 2026.01.19

CS) 인터럽트

인터럽트인터럽트란 CPU가 프로그램을 실행하고 있는 도중에, 입출력 하드웨어 장치나 예외 상황이 발생하여 CPU에게 처리를 요청하는 신호를 말한다. 인터럽트가 발생하면 CPU는 현재 실행 중인 명령어까지만 수행하고 즉시 작업을 중단한 뒤, 해당 이벤트를 처리하기 위한 ISR( Interrupt Service Routine)이라는 특정 코드로 제어권을 옮긴다. 인터럽트 발생 원인은 외부에 있는지 내부에 있는지에 따라 두 가지로 나뉜다. 1. 하드웨어 인터럽트CPU 외부의 하드웨어 장치가 전기 신호를 통해 CPU에게 보내는 비동기적(Asynchronous) 신호이다.예시로는 키보드, 마우스 입력에서 일어난다. 2. 소프트웨어 인터럽트CPU 내부에서 명령어를 실행하는 과정에서 동기적(Synchronous)으..

CS 2026.01.15

CS) 물리적 메모리 vs 논리적 메모리

물리적 메모리물리적 메모리란 컴퓨터에 설치된 실제 RAM을 의미한다. 논리적 메모리논리적 메모리는 프로그래머나 CPU가 바라보는 가상 메모리이다. 물리적 메모리에 데이터가 들어가면 물리 주소를 가지는데 이는 RAM에 있는 진짜 위치이고반대로 논리적 메모리는 RAM의 일정 칸을 다 쓴다고 착각하며 사용하는 가상의 메모리이다. 1. 만약 내가 100MB 게임 A를 실행하면 실제 RAM에 0 ~ 100칸까지 저장을 한다 가정2. 그 뒤로 50MB 다른 프로그램 B를 실행하면 101 ~ 150칸까지 저장3. 그 뒤로 200MB 다른 프로그램 C를 실행하면 151 ~ 350칸까지 저장을 할 것이다. 이렇게 RAM은 먼저 실행된 프로세스를 가져와 저장하는데 만약 이 상태에서 B를 끈다면?-> 101~ 150..

CS 2026.01.15

CS) 데드락(교착 상태)

데드락(교착 상태)데드락이란 두 개 이상의 프로세스나 스레드가 각자 자원을 점유한 상태에서, 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 대기를 하는 상태를 말한다. (여기서 말하는 자원은 프로세스나 스레드가 작업을 수행하기 위해 필요로 하는 모든 것)결과적으로, 해당 프로세스 집합 내의 어떤 프로세스도 상태를 변경할 수 없으며, 영구적으로 진행이 멈추게 되는 상태이다. 발생 메커니즘 (Resource Allocation Graph)운영체제에서는 이를 자원 할당 그래프(Resource Allocation Graph, RAG)로 표현합니다.상황:프로세스 P1은 자원 R1을 점유(Holding)하고 있습니다.프로세스 P2는 자원 R2를 점유(Holding)하고 있습니다.P1은 실행을 계속하..

CS 2026.01.15

CS) CPU 스케줄링

CPU 스케줄링CPU 스케줄링이란 언제 어떤 프로세스에 CPU를 할당할지 결정하는 알고리즘을 말한다. 만약 CPU가 따로 규칙 없이 먼저 들어온 프로세스 순서대로만 처리한다면 ex) 내가 게임을 하려고 켰는데, 뒤에서 다른 프로그램 업데이트를 시작한 상황이 경우 프로그램 업데이트가 10분 걸린다고 하면 CPU는 이를 10분동안 처리할 것이고 그 동안 나는 게임을 10분동안 못할 것이다. 이렇게 프로세스 별로 CPU 처리시간이 다른데 프로세스가 수 없이 CPU에 들어오면 문제가 생길 것이다.이러한 상황을 막기 위해 운영체제는 CPU 사용 시간을 아주 잘게 쪼개서 나눠서 실행 한다. 이를 CPU 스케줄러라고 한다. 보통 스케줄러는 아래 세가지 경우에 개입을 한다.프로세스가 끝났을 때입력/출력 요청, ..

CS 2026.01.14

CS) 스택 프레임

스택 프레임스택 프레임이란 함수 하나가 실행되기 위해 프로세스의 스택 영역에 할당되는 전용 메모리 칸을 말한다. 함수가 호출될 때마다 이 함수만을 위한 전용 공간이 하나씩 새로 생기는데 이를 스택 프레임이라고 부른다. 스택 프레임의 구성 요소로는 아래와 같다. 반환 주소 : 함수 실행이 끝나면 Code 영역의 어디로 돌아가야 하는지 적혀 있는 주소매개 변수 : 함수를 호출할 때 넘겨준 인자값들지역 변수 : 함수 내부에서 선언한 변수들스택 프레임은 이름에 맞게 스택 자료구조 형태를 띄는데 스택은 후입선출로 가장 마지막에 들어간 요소가 가장 먼저 나가는 특성이 있다. 그래서 스택 프레임도 데이터가 쌓이는데 매개 변수 -> 반환 주소 -> 지역 변수 순으로 쌓인다. // 덧셈 함수 int Add(int a..

CS 2026.01.14

CS) 프로세스와 스레드

프로세스프로세스란 프로그램을 실행시켜 작업중인 프로그램을 의미한다. 프로그램을 실행하면 컴퓨터는 디스크부터 RAM까지 데이터를 퍼서 나르는데 이 상태가 프로세스이다. 작업 관리자를 실행하면 프로세스를 볼 수 있는데 이는 프로그램을 실행시키면 메모리에 할당되었다는 뜻이다. 이 자체가 프로세스이다. 프로그램이 실행되고 프로세스가 만들어지면 아래 4가지의 메모리 영역으로 구성되어 할당 받게 된다. 코드(Code) 영역 : 소스 코드들이 CPU가 해석 가능한 기계어 형태로 저장되어 있는 영역, C++에선 코드 그 자체데이터(Data) 영역 : 전역 변수와 정적 변수가 저장되는 영역static int GameScore = 0; // 게임 내내 유지되어야 함 -> Data 영역스택(Stack) 영역 : 지역 변수..

CS 2026.01.14

CS) 캐시 메모리

https://zzugest1.tistory.com/86 CS) 메모리https://zzugest1.tistory.com/80 CS) 폰노이만 구조폰노이만 구조란 현대에 쓰이고 있는 모든 컴퓨터의 기본 설계도이다. 최초의 계산기 애니악은 사람이 일일이 전선을 뺐다 꼈다 하며 회로를 물리적으zzugest1.tistory.com 메모리의 종류로는 주기억장치, 보조기억장치와 더불어 속도보완장치인 캐시 메모리가 있다. 캐시 메모리캐시 메모리 CPU와 주기억장치(RAM) 사이의 속도 차이를 줄여주는 메모리이다. CPU는 비약적으로 빨라졌지만 메모리의 속도가 느리면 CPU가 노는 현상인 병목현상을 보완해주기 위해 나타난 것이 캐시 메모리이다. 그래서 CPU에는 캐시 메모리가 3개정도 사용이 되는데 이를 L1, L..

CS 2026.01.14

CS) 메모리

https://zzugest1.tistory.com/80 CS) 폰노이만 구조폰노이만 구조란 현대에 쓰이고 있는 모든 컴퓨터의 기본 설계도이다. 최초의 계산기 애니악은 사람이 일일이 전선을 뺐다 꼈다 하며 회로를 물리적으로 바꿔야했지만이러한 문제점을 해결하zzugest1.tistory.com 폰노이만 구조에 이어서 메모리에 대해 자세히 알아보도록 하자. 메모리 : 컴퓨터에서 데이터나 명령어를 저장하는 하드웨어를 통칭, CPU가 당장 작업할 내용을 올려두는 작업대 개념 메모리는 한 칸당 1바이트 크기로, 각 칸은 주소로 구분이 된다. CPU는 메모리에 있는 데이터를 가져올 때 이 주소를 사용한다. 메모리의 종류로는 아래와 같다. 구분종류특징주기억장치RAM전원이 꺼지면 저장된 내용이 모두 사라짐(휘발성..

CS 2026.01.14

CS) 고급 언어, 저급 언어, 기계어

컴퓨터 언어는 크게 고급 언어, 저급 언어, 기계어로 나눌 수 있다. 이는 프로그래밍 언어를 사람이 이해하는 정도에 따라 분류한 것이다. 기계어기계어는 CPU가 다른 해석 없이 즉각적으로 실행할 수 있는 유일한 언어이다. 기계어는 오로지 0과 1(이진수)로만 이루어져 있으며, 하드웨어 종류마다 체계가 다르다. 저급 언어저급 언어는 하드웨어 구조에 밀접하게 맞닿아 있는 언어로 기계어와 매우 가까운 언어이다. 대표 언어로 어셈블리어가 있다. 고급 언어 사람이 쓰는 언어와 유사하게 만들어져 이해하고 사용하기 쉬운 언어로 C, Java, Python 등이 이에 해당한다.그렇기 때문에 생산성이 높고, 유지보수가 쉽다는 장점이 있다. 하지만 이를 이용해 작성해도 컴퓨터는 바로 읽지 못하므로컴파일러나 인터프리터..

CS 2026.01.14