분류 전체보기

Computer Science/자료구조

[자료구조] 스택(Stack) & 큐(Queue)

스택(Stack) 후입선출(Last In First Out; LIFO) 자료구조 : 마지막에 들어온 데이터가 먼저 나가는 구조 스택 구현 일반적으로 배열 또는 연결 리스트로 구현 배열 기반 스택 : 고정된 크기를 가짐 연결 리스트 기반 스택 : 동적으로 크기가 조정됨 스택 기본 연산 push: 스택의 맨 위에 요소 추가 pop : 스택의 맨 위에 있는 요소를 제거하고 반환 peek 또는 top : 스택의 맨 위에 있는 요소를 반환하지만 제거하지는 않음 스택 사용 데이터의 순서와 관련된 정보를 유지하면서 데이터를 저장하고 검색하는 경우 유용하게 사용된다. 함수 호출과 재귀 알고리즘 함수가 호출되면 해당 함수의 호출 정보(매개 변수, 반환 주소 등)가 스택의 맨 위에 저장된다. 함수의 실행이 완료되면 스택에..

Computer Science/Operating System

[OS] 인터럽트(Interrupt)

인터럽트 정해진 흐름 대로 CPU가 실행되고 있는데 이것을 끊는 것을 인터럽트라고 한다. 인터럽트의 종류 동기 인터럽트(예외) : CPU에 의해 발생하는 인터럽트이다. CPU가 명령어들을 수행하다가 예상치 못한 상황이 발생하면 동기 인터럽트가 발생한다. 비동기 인터럽트(하드웨어 인터럽트) : 특정한 동기화 신호 없이 다른 프로세스, 장치, 또는 외부 이벤트에 의해 발생 (ex. 전화/문자 메시지, 웹 브라우저의 팝업 창, 입출력장치 등) 하드웨어 인터럽트를 사용하는 이유는 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해서이다. 예를 들어 프린트를 하는 상황에서 만약 인터럽트가 없다면, CPU는 프린트 완료 여부를 확인하기 위해 주기적으로 확인해야 한다. 그러나 인터럽트가 있다면 입출력 작업 동안 ..

Computer Science/Operating System

[OS] 프로세스(Process) & 스레드(Thread)

프로세스 (Process) 메모리에 올려져서 실행 중인 프로그램 각각의 프로세스는 독립된 메모리 공간, 자원, 상태 등을 갖는다. 독립된 메모리 공간에는 Text(Code), Data, Stack, Heap을 할당 받는다. 프로세스는 실행 중인 프로그램의 인스턴스로, 별도의 메모리 영역을 할당받고, 자체적으로 제어 블록인 PCB(Process Control Block)을 갖는다. PCB에는 id, register, PC 등이 있다. 응용 프로그램 ≠ 프로세스 응용 프로그램은 여러 프로세스로 구성 가능 프로세스 스테이트(Process State) 프로세스가 운영체제에 의해 관리되는 동안 어떤 상태에 있는지를 나타낸다. 프로세스의 상태는 다양한 상태 전이(Transition)에 따라 변경될 수 있다. new..

Computer Science/Operating System

[OS] 운영체제란?

운영체제(Operating System, OS) : 컴퓨터 시스템의 핵심 소프트웨어로서, 하드웨어와 응용 프로그램 사이의 인터페이스 역할을 담당한다. 컴퓨터의 자원을 관리하고, 응용 프로그램의 실행을 조정하며, 사용자와 컴퓨터 간의 상호작용을 가능하게 한다. 운영체제의 역할 자원 관리 : CPU, 기억장치, 입출력장치, 프로세서, 파일 및 정보 등의 자원을 효율적으로 관리한다. 자원 보호 : 프로그램이나 다른 사용자가 데이터를 삭제하거나 중요한 파일에 접근하지 못하도록 컴퓨터 자원을 보호한다. 응용 프로그램 실행 : 프로세스 관리와 스케줄링을 통해 CPU 시간을 적절히 할당하고, 메모리 관리를 통해 프로그램이 필요로 하는 메모리 공간을 할당한다. 사용자와의 상호작용 : 사용자의 입력을 받아들이고 출력을 ..

북 스터디/스프링 부트 핵심 가이드

[스프링 부트] 02장. 개발에 앞서 알면 좋은 기초 지식

이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다.스프링 프레임워크(Spring Framework)에는 약 20개의 모듈이 들어있다. 근데 기능이 많은 만큼 개발자가 신경써야 할 것이 많아지고 주요 업무인 비즈니스 로직 설계에 집중 할 수 없게 된다. 이를 해결하기 위해 나온 것이 스프링 부트(Spring Boot)이다. 특징1. 자동 설정(Auto-configuration)스프링 부트는 다양한 기본 설정을 제공하여 개발자가 별도의 설정 없이도 어플리케이션을 실행할 수 있게 한다. 예를 들어, 스플이 데이터 JPA를 사용하기 위해 필요한 설정이 있다면, 스프링 부트는 자동으로 해당 설정을 수행한다. 이때, 개발자는 필요한 설정을..

북 스터디/스프링 부트 핵심 가이드

[스프링 부트] 01장. 스프링 부트란?

이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 스프링 부트(Spring Boot) 스프링 부트는 자바 기반의 오픈 소스 프레임워크인 스프링(Spring)을 기반으로한 독립적으로 실행 가능한 애플리케이션을 빠르고 간편하게 개발할 수 있도록 도와주는 도구이다. 스프링 부트는 스프링 프레임워크의 설정을 자동화하고, 개발자가 주로 신경써야 하는 공통적인 작업들을 간소화하여 생산성을 향상시킨다. 스프링의 특징과 구조 제어 역전(IoC; Inversion of Control) 객체의 생성과 관리를 개발자가 하는 것이 아니라 프레임워크가 담당하는 디자인 패턴이다. 제어 역전은 객체의 의존성을 관리하는 방식으로 주로 사용된다. 전통적인 ..

Computer Science/자료구조

[자료구조] Array vs ArrayList vs LinkedList

배열(Array) : 요소들을 인덱스에 기반하여 연속적으로 저장하는 자료구조 ArrayList : 동적 크기를 가지는 배열로, 내부적으로 배열을 사용하여 구현되는 자료구조 LinkedList : 각 요소들을 노드로 구성하고, 노드들은 데이터와 다음 노드를 가리키는 포인터로 연결되는 자료구조 Array, ArrayList, LinkedList 비교 1. 크기 조정 배열 : 고정 크기로 선언되며, 크기를 변경할 수 없다. ArrayList, LinkedList : 동적으로 크기가 조정된다. 2. 타입 제한 배열 : 제네릭 타입 사용 불가능 ArrayList, LinkedList : 제네릭 타입을 사용가능 배열에 제네릭 타입을 사용할 수 없는 이유는 배열은 컴파일 시점에서 자신의 요소 타입을 알고 있어야 하는..

Computer Science/자료구조

[자료구조] 연결리스트(LinkedList)

연결리스트란? 연결리스트 : 데이터 요소들을 노드(Node)라는 단위로 구성하여 메모리 상에서 연속적으로 배치되지 않고, 각 노드들이 포인터(Pointer)로 연결되어 있는 자료구조 • 각 노드는 데이터를 저장하는 데이터 필드(data field)와 다음 노드를 가리키는 링크 필드(link field)로 구성되어 있다 단방향 연결리스트(Singly Linked List) : 각 노드가 다음 노드를 가리키는 링크 필드만을 갖고 있다. 이러한 구조로 인해 단방향으로 노드들이 연결되어 있다. 양방향 연결리스트(Doubly Linked List) : 각 노드가 이전 노드와 다음 노드를 가리키는 링크 필드를 갖고 있다. 양방향으로 노드들이 연결되어 있기 때문에 양쪽 방향으로 노드를 탐색할 수 있다. 연결리스트의 ..

Computer Science/자료구조

[자료구조] 배열 (Array)

배열이란? 배열 : 동일한 데이터 유형의 요소들을 일렬로 나열한 것 • 논리적 저장 순서와 물리적 저장 순서가 일치한다. • 각 요소는 인덱스를 통해 접근할 수 있다. • 메모리 상에 연속적으로 할당된다. 배열의 장단점 장점 1. 빠른 접근 : 인덱스를 통해 요소에 빠르게 접근할 수 있다. 시간복잡도는 O(1)이다. 단점 1. 크기 제한 : 생성할 때 크기를 정해야 하며, 이 크기는 변경할 수 없다. 2. 메모리 낭비 : 미리 정해진 크기를 사용하기 때문에 요소가 모두 채워지지 않는 경우 메모리를 낭비할 수 있다. 크기를 크게 설정하면 필요 이상의 메모리를 사용하게 되고, 작게 설정하면 요소를 저장할 공간이 부족해질 수 있다. 또한, 빈 메모리 공간이 배열의 크기 보다 작으면 사용할 수 없다. 3. 삽입..

Computer Science/컴퓨터 구조

[CS][컴퓨터 구조] 캐시 메모리 (Cache Memory)

이글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자: 강민철) 의 인프런 강의를 참고하여 정리한 글입니다. 캐시 메모리 (Cache Memory) 캐시 메모리란? CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치로, 데이터를 미리 복사해두는 임시 저장공간을 의미한다. 캐시 메모리를 사용하는 이유는? CPU가 메모리에 접근하는 시간이 CPU 연산 속도보다 압도적으로 느리다. 그래서 접근 시간이 월등히 빠른 캐시 메모리 내에 데이터를 저장하여 접근하게 하고 이를 통해 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄일 수 있다. 즉, CPU가 RAM에 저장된 데이터들을 읽어올 때, 자주 사용되는 데이터들을 캐시 메모리에 올려둠으로써 다음 접근 시, 데이터 ..

dbssk
'분류 전체보기' 카테고리의 글 목록 (13 Page)