운영체제(Operating System, OS) : 컴퓨터 시스템의 핵심 소프트웨어로서, 하드웨어와 응용 프로그램 사이의 인터페이스 역할을 담당한다. 컴퓨터의 자원을 관리하고, 응용 프로그램의 실행을 조정하며, 사용자와 컴퓨터 간의 상호작용을 가능하게 한다. 운영체제의 역할 자원 관리 : CPU, 기억장치, 입출력장치, 프로세서, 파일 및 정보 등의 자원을 효율적으로 관리한다. 자원 보호 : 프로그램이나 다른 사용자가 데이터를 삭제하거나 중요한 파일에 접근하지 못하도록 컴퓨터 자원을 보호한다. 응용 프로그램 실행 : 프로세스 관리와 스케줄링을 통해 CPU 시간을 적절히 할당하고, 메모리 관리를 통해 프로그램이 필요로 하는 메모리 공간을 할당한다. 사용자와의 상호작용 : 사용자의 입력을 받아들이고 출력을 ..
배열(Array) : 요소들을 인덱스에 기반하여 연속적으로 저장하는 자료구조 ArrayList : 동적 크기를 가지는 배열로, 내부적으로 배열을 사용하여 구현되는 자료구조 LinkedList : 각 요소들을 노드로 구성하고, 노드들은 데이터와 다음 노드를 가리키는 포인터로 연결되는 자료구조 Array, ArrayList, LinkedList 비교 1. 크기 조정 배열 : 고정 크기로 선언되며, 크기를 변경할 수 없다. ArrayList, LinkedList : 동적으로 크기가 조정된다. 2. 타입 제한 배열 : 제네릭 타입 사용 불가능 ArrayList, LinkedList : 제네릭 타입을 사용가능 배열에 제네릭 타입을 사용할 수 없는 이유는 배열은 컴파일 시점에서 자신의 요소 타입을 알고 있어야 하는..
연결리스트란? 연결리스트 : 데이터 요소들을 노드(Node)라는 단위로 구성하여 메모리 상에서 연속적으로 배치되지 않고, 각 노드들이 포인터(Pointer)로 연결되어 있는 자료구조 • 각 노드는 데이터를 저장하는 데이터 필드(data field)와 다음 노드를 가리키는 링크 필드(link field)로 구성되어 있다 단방향 연결리스트(Singly Linked List) : 각 노드가 다음 노드를 가리키는 링크 필드만을 갖고 있다. 이러한 구조로 인해 단방향으로 노드들이 연결되어 있다. 양방향 연결리스트(Doubly Linked List) : 각 노드가 이전 노드와 다음 노드를 가리키는 링크 필드를 갖고 있다. 양방향으로 노드들이 연결되어 있기 때문에 양쪽 방향으로 노드를 탐색할 수 있다. 연결리스트의 ..
배열이란? 배열 : 동일한 데이터 유형의 요소들을 일렬로 나열한 것 • 논리적 저장 순서와 물리적 저장 순서가 일치한다. • 각 요소는 인덱스를 통해 접근할 수 있다. • 메모리 상에 연속적으로 할당된다. 배열의 장단점 장점 1. 빠른 접근 : 인덱스를 통해 요소에 빠르게 접근할 수 있다. 시간복잡도는 O(1)이다. 단점 1. 크기 제한 : 생성할 때 크기를 정해야 하며, 이 크기는 변경할 수 없다. 2. 메모리 낭비 : 미리 정해진 크기를 사용하기 때문에 요소가 모두 채워지지 않는 경우 메모리를 낭비할 수 있다. 크기를 크게 설정하면 필요 이상의 메모리를 사용하게 되고, 작게 설정하면 요소를 저장할 공간이 부족해질 수 있다. 또한, 빈 메모리 공간이 배열의 크기 보다 작으면 사용할 수 없다. 3. 삽입..
이글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자: 강민철) 의 인프런 강의를 참고하여 정리한 글입니다. 캐시 메모리 (Cache Memory) 캐시 메모리란? CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치로, 데이터를 미리 복사해두는 임시 저장공간을 의미한다. 캐시 메모리를 사용하는 이유는? CPU가 메모리에 접근하는 시간이 CPU 연산 속도보다 압도적으로 느리다. 그래서 접근 시간이 월등히 빠른 캐시 메모리 내에 데이터를 저장하여 접근하게 하고 이를 통해 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄일 수 있다. 즉, CPU가 RAM에 저장된 데이터들을 읽어올 때, 자주 사용되는 데이터들을 캐시 메모리에 올려둠으로써 다음 접근 시, 데이터 ..
이글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자: 강민철) 의 인프런 강의를 참고하여 정리한 글입니다. CPU의 구성 요소에 대해 조금 더 자세하게 알아보고 CPU의 작동 원리에 대해 알아보겠습니다. ALU (Arithmetic Logic Unit) 받아들이는 정보 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어신호를 받아들인다. 내보내는 정보 1. 피연산자와 제어 신호를 바탕으로 연산을 하고 결괏값을 레지스터에 저장한다. (메모리가 아니라 레지스터에 저장하는 이유는 CPU가 메모리보다 레지스터에 더 빠르게 접근하기 때문이다.) 2. 연산 결과에 대한 부가 정보인 플래그를 플래그 레지스터에 저장한다. 부호 플래그 : 연산한 결과의 부호를 나타낸다. 제로 플래그 : 연산 결과가 0인지 여부를..
이글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자: 강민철) 의 인프런 강의를 참고하여 정리한 글입니다. 먼저, 컴퓨터 구조란 컴퓨터 시스템의 구성 요소들이 어떻게 상호작용 하는지를 이해하는 분야입니다. 컴퓨터 구조를 이해하는 것은 컴퓨터 시스템의 성능을 최적화하고, 문제를 해결하는 데 필수적입니다. 이번 글에서는 컴퓨터 구조의 주요 구성 요소들에 대해 알아보겠습니다. 1. 중앙 처리 장치 (CPU) CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품입니다. CPU 내부 구성 요소 중 가장 중요한 세가지는 ALU(Arithmetic Logic Unit), 레지스터(Register), 제어장치(Control Unit) 입니다. ALU는 한국어로 하면 산술논리연산장치로 말 그대로 계..
Queue란? 선입선출 (First In First Out; FIFO) 자료구조 먼저 들어온 데이터가 먼저 나가는 구조 입력 순서대로 데이터 처리가 필요할 때 사용 BFS (Breath-First Search) Queue 기본 구조 Queue 기본 연산 Queue 생성 큐는 배열기반의 컬렉션 클래스를 사용하면 데이터를 꺼낼 때마다 빈 공간을 채우기 위해 데이터를 복사해야 하므로 LinkedList로 구현하는 것이 적합하다. import java.util.LinkedList; import java.util.Queue; Queue queue = new LinkedList(); // Queue는 interface로 구현되어 있음. 따라서 바로 객체로 만들 수 없음. -> Queue queue = new Que..
스택 (Stack) 후입선출 (Last In First Out; LIFO) 자료구조 - 마지막에 들어온 데이터가 먼저 나가는 구조 - First In Last Out (FILO) 라고 하기도 한다. 순차적으로 데이터를 추가하고 삭제하기 때문에 ArrayList와 같은 배열 기반의 클래스를 사용하는 것이 적합하다. 스택의 기본 구조 스택의 기본 연산 push(item) - 스택의 Top에 요소 저장 pop() - 스택의 가장 마지막 요소를 반환하며 삭제 - 만약 스택이 비어있을 때 pop()을 한다면 EmptyStackException 발생 peek() - 스택의 가장 마지막 요소를 반환하지만 삭제는 하지 않는다. contains(item) - 스택 안에 요소가 있는지 확인 search(item) - 스택..