Computer Science
-
[알고리즘] Scanner VS BufferedReaderComputer Science/Algorithm 2023. 3. 3. 19:21
📍 Scanner와 BufferedReader는 대표적으로 사용자(키보드) 입력을 받기 위해 사용하는 클래스 - BufferedReader가 속도 측면에서 더 우위를 가지고 있음 - 데이터 인풋의 양이 적을 경우에는 문제 없지만, 데이터 양이 많아질수록 성능 차이가 크게 발생 Scanner 사용법 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String input = sc.next(); // 공백 이전 문자열 반환 int inputNum = sc.nextInt(); // 공백 이전의 숫자 반환 } } BufferedReader 사..
-
[운영체제] 메모리 관리 - 페이징 (Paging)Computer Science/Operating System 2023. 2. 28. 13:15
들어가기 전에 External Fragmentation (외부 단편화) 란? : 총 메모리 공간을 계산했을 때 요청을 처리할만한 충분한 메모리가 있음에도 불구하고, 가능한 공간들이 연속적이지 않아 (저장 공간이 많은 hole 들로 조각조각 나있을 때) 프로세스를 할당할 수 없는 문제 - 프로세스는 실행이 되면 메모리에 올라가게 됨 - 프로세스는 연속적으로 배치가 됨(Contiguous allocation) → 프로세스를 쪼개서 배치할 수 없음 - 아래 그림과 같이 Process4가 들어갈 수 있는 자리가 있음에도 할당되지 못하고 대기하게 되는 문제 발생 ※ 참고: 프로세스를 밑으로 재배치하여 Hole 을 없애는 방법은 불가한가? 더보기 Compaction : 비어 있는 공간을 연속적인 공간으로 만들고 움..
-
[운영체제] 프로세스 VS 스레드 개념 및 예상 질문Computer Science/Operating System 2023. 2. 7. 12:24
프로세스 VS 스레드 구분 프로세스 스레드 사전적 의미 컴퓨터에서 실행되고 있는 컴퓨터 프로그램 - 메모리에 올라와 실행되고 있는 프로그램 인스턴스 프로세스 내에서 실행되는 여러 흐름의 단위 - 프로세스의 특정한 수행 경로 고유 할당 자원 Code, Data, Stack, Heap 프로세스 내에서 Stack만 따로 할당 특징 1. 프로세스 한 개당 최소 1개의 스레드를 가지고 있음 2. 각 프로세스는 별도의 주소 공간에서 실행되어 다른 프로세스의 변수나 자료구조에 접근 불가 3. 다른 프로세스 자원에 접근하려면 프로세스간 통신(IPC) 사용 필요 (파이프, 파일, 소켓 등) 1. 같은 프로세스 내의 여러 스레드들은 같은 힙 공간 공유 2. 한 스레드가 프로세스 자원을 변경하면 다른 이웃 스레드도 그 변경..
-
[운영체제] 프로세스의 구성, 상태, 시스템콜 등 총 정리Computer Science/Operating System 2023. 2. 7. 00:28
프로세스란? : 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것 - 가상 메모리 공간, 코드, 데이터, 시스템 자원의 집합(microsoft) - 하나 혹은 그 이상의 Thread로 실행되는 컴퓨터 프로그램의 instance - Process는 Program code와 그 activity를 포함 프로세스의 구성 PCB (Process Control Block) : 프로세스에 대한 정보는 프로세스 제어블록(PCB, Process Control Block) 또는 프로세스 기술자(Process descriptor)라고 부르는 자료구조에 저장 - 운영체제는 프로세스 관리를 위해 프로세스의 생성과 동시에 고유한 PCB를 생성하여 Kernel 영역에 저장 - 프로세스는 CPU..
-
[운영체제] 프로그램의 실행(memory load)과 메모리 주소Computer Science/Operating System 2023. 1. 30. 23:54
프로그램의 실행 - 프로그램은 File System에 실행 파일 형태로 저장되어 있고, 이를 실행하면 메모리에 올라가 프로세스가 됨 - 물리적인 메모리에 바로 올라가지 않고 가상 메모리 단계를 추가로 거치는데, 이 때 독자적인 메모리 주소 공간이 형성됨 - 메모리 낭비 방지를 위해 프로그램 중 당장 실행에 필요한 부분만 물리적 메모리에 올라가고, 그렇지 않은 부분은 스왑 영역에 들어감 프로세스의 메모리 주소 공간 Code : CPU에서 실행할 기계어 코드 저장 Data : 전역 변수 등 프로그램에 사용하는 데이터 저장 Stack : 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장 커널 주소 공간 Code : 시스템콜, 인터럽트 처리 코드와 자원 관리를 위한 코드 저장 ..
-
[운영체제] DMA(Direct Memory Access) 개념과 동작 방법Computer Science/Operating System 2023. 1. 30. 23:22
기본적인 입출력 제어 방식 - 하드디스크에서 데이터를 꺼낸 후 시스템 버스를 통해 CPU 레지스터에 옮겨지고 다시 시스템 버스를 통해 CPU 레지스터에서 메모리로 이동 - 모든 메모리 접근 연산이 CPU에 의해서만 이루어질 경우 주변 장치가 메모리 접근을 원할 때마다 인터럽트를 통해 CPU의 업무가 방해 받게 되어 사용 효율성이 떨어짐 DMA(Direct Memory Access) 방식 - CPU가 주변 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 방지 - DMA 컨트롤러가 입출력장치에서 데이터를 읽은 후 메모리로 전송하고 전송 완료 신호를 CPU에 송신
-
[운영체제] 동기식 입출력과 비동기식 입출력Computer Science/Operating System 2023. 1. 30. 23:06
입출력 (I/O) : 컴퓨터 시스템이 컴퓨터 외부의 주변 장치들과 데이터를 주고 받는 것을 의미 동기식 입출력 (Synchronous I/O) : I/O 요청 후 입출력 작업이 완료된 후 제어가 사용자 프로그램에 넘어감 (순차적) ex. 프로그램이 디스크에서 어떤 정보를 읽어서 처리를 해야 하는 경우 구현 방법 1. - 입출력이 끝날 때까지 인터럽트를 기다렸다가 끝나면 사용자 프로그램에 CPU의 제어권이 넘어가 다음 명령어 수행 가능 - 매 시점마다 하나의 CPU만 일을 하며, 하나의 입출력만 일어날 수 있음 ➡️ CPU 낭비 구현 방법 2. - 입출력이 완료될 때까지 해당 프로그램에서 CPU의 제어권을 빼앗음 (해당 프로그램은 봉쇄 상태) - 입출력 처리를 기다리는 줄에 해당 프로그램을 세우고 다른 프..
-
[컴퓨터 구조] CPU의 구조 및 CPU VS GPUComputer Science/Computer Architecture 2023. 1. 24. 16:00
CPU란? : 명령어를 해석, 연산, 결과를 저장하는 등의 수행을 하는 유닛 Core란? : CPU 역할을 수행하는 블록 - 한 개의 CPU 칩에 한 개의 코어가 있으면 싱글코어, 코어 개수에 따라 prefix가 달라짐(듀얼코어 등) Core의 구성요소 1. 제어 장치 (CU, Control Unit) : 명령어 레지스터(메모리)에 저장된 명령어를 가져와 해석 후 명령어 실행을 지시할 제어 신호 생성 - 프로그램 계수기(프로그램 순서 제어), 명령 레지스터(명령어 임시 기억), 명령해독기(레지스터의 명령을 해독하여 수행 장치에 제어 신호를 보냄)로 구성 2. 연산 장치 (ALU, Arithmethic Login Unit) : 제어 장치의 지시를 받아 산술, 논리, 비트 연산 등 실제 연산을 수행하는 장치..