분류 전체보기 8

3. 자료구조 (1) - 자료구조의 종류와 특징

자료구조의 종류와 특징에 대해 간단히 알아보자. 자료구조의 정의자료구조의 종류시간 복잡도 1. 자료구조  정의데이터를 저장, 조직화, 관리, 처리하는 방법을 정의한 것 자료구조는 효율적인 알고리즘을 구현하기 위해 반드시 필요하다. 해결해야 하는 문제에 따라 적절한 자료구조를 선택하는 것이 성능에 직접적인 영향을 미친다.  종류와 특징 (1) 배열동일한 자료형의 데이터를 연속된 메모리에 저장하는 구조장점 : 인덱스를 이용한 빠른 접근이 가능함.단점 : 크기가 고정됨. 삽입 및 삭제 비용이 큼.예) 정렬과 관련된 알고리즘, 이차원 배열을 활용한 행렬 등 (2) 연결 리스트각 노드가 데이터 + Pointer 를 함께 저장하는 구조단일 / 이중 / 원형으로 총 세가지 종류가 있음. 장점 : 삽입 및 삭제에 유리..

CS 2025.03.31

2.운영체제 (2) - 운영체제의 관리 작업

운영체제는 컴퓨터의 자원을 효율적으로 관리한다. 그렇다면 주로 어떤 것들을 관리하는지, 그 과정에서 중요한 개념은 무엇이 있는지 알아보자.프로세스와 스레드자원 할당 및 관리1. 프로세스 (1) 프로세스의 정의컴퓨터가 현재 실행하고 있는 프로그램 프로세스는 능동적 엔터티(Active Entity) 라고 할 수 있는데, 이는 프로세스가 실제로 CPU를 사용해 메모리에서 명령을 실행하고 작업을 수행하는 등 "활성화된 상태"이기 때문이다.  능동적 엔터티와 반대되는 개념은 수동적 엔터티로 디스크 혹은 저장장치에 저장된 프로그램을 말한다. 사용자가 프로그램을 실행하지 않는다면 단순히 명령어와 데이터의 집합에 지나지 않는다. 즉, 현재 실행되고 있는 프로그램이 프로세스다.운영체제는 이러한 프로세스를 어떻게 관리할까..

CS 2025.03.07

2. 운영체제 (1) - 운영체제의 구성과 역할

운영체제는 컴퓨터의 하드웨어와 소프트웨어를 관리하고, 사용자와 하드웨어 간 인터페이스 역할을 하는 시스템 소프트웨어를 말한다. 운영체제의 구성요소 - 커널 / 쉘운영체제의 역할1. 커널 (1) 커널의 정의운영체제의 핵심 코어. 하드웨어와 소프트웨어의 중개자 역할. 커널은 사용자가 실행하는 프로그램이 하드웨어 자원을 효율적으로 사용할 수 있도록 여러 자원을 관리하고 보호하는 역할을 한다. 프로세스 관리, 메모리 관리, 파일 시스템 관리, 드라이버 관리 등을 수행한다. 커널은 하드웨어와 가장 가까이 위치해 동작한다. 제일 아래 계층에서 역할을 수행하기 때문에 커널이 오작동하면 운영체제 자체를 사용할 수 없게 된다.(2) 커널의 종류 커널의 종류는 설계 방식에 따라 크게 네 가지로 나눌 수 있다.단일형 커널(..

CS 2025.03.04

1. 컴퓨터 구조 (2) - CPU / 메모리 / 보조기억장치 / 입출력 장치

컴퓨터를 구성하고 있는 여러 부품 중 핵심적인 부품에는 어떤 것들이 있을까?CPU메모리입출력 장치1. CPU (1) CPU의 정의명령어를 해석하고 실행하는 컴퓨터의 두뇌와도 같은 존재CPU는 중앙 처리 장치라고 하며 명령어의 해석 및 실행을 통해 데이터를 처리하고 프로그램을 실행하는 핵심 장치다.(2) CPU의 구성요소CPU의 주요 구성 요소는 아래와 같다.연산 장치 - 수학적 연산을 수행제어 장치 - 명령어의 해석 및 실행 제어레지스터 - 데이터를 임시로 저장하는 초고속 기억 장치(3) 명령어 처리과정 CPU는 명령어 사이클을 통해 명령어를 처리한다. 여기서는 위에서 언급한 레지스터에 대한 이해가 필요한데, 레지스터는 운영체제로부터 명령에 대한 해석 및 계산을 요청 받는다. 주요 종류는 다음과 같다.P..

CS 2025.02.27

1. 컴퓨터 구조 (1) - 데이터 / 명령어

컴퓨터가 이해하는 정보에는 데이터와 명령어가 존재한다. 컴퓨터 과학에서 데이터와 명령어가 어떻게 정의되는지, 주요 특징 및 기능은 무엇인지, 컴퓨터가 어떤식으로 정보를 해석 및 처리하는지 알아보자. 1. 데이터 (1) 데이터의 정의프로그램에 부속된 파일, 사용자가 해석 불가능한 이진 파일형태 컴퓨터에서의 데이터는 0 과 1로 이루어져있다. 데이터는 컴퓨터에 의해 해석 및 처리되어 전기 신호의 형태로 전송되거나, 여러 저장매체에 저장된다.  데이터의 최소 구분 단위는 bit 이지만, 입출력을 위한 최소 단위는 8개의 bit 가 모인 byte 다. 이러한 데이터들이 모여서 컴퓨터가 해석하고 실행할 수 있는 명령의 집합체인 프로그램이 만들어진다. (2) 인코딩과 디코딩인코딩(Encoding) : 데이터를 특정..

CS 2025.02.26

CS 학습 로드맵

CS (Computer Science) : 직역하면 컴퓨터 과학. CS는 연산, 정보, 자동화에 대한 학문이라고 정의할 수 있다.CS 공부의 필요성컴퓨터의 구조운영체제자료구조네트워크데이터베이스1. CS 를 공부해야 하는 이유처음에도 언급했듯이 CS의 정의를 보면 CS는 연산, 정보, 자동화에 대해 설명할 수 있다고 한다. 그 예시를 들어보자.연산 : 출발지에서 도착지까지의 최단 경로 찾기정보: 대용량의 데이터를 저장하고 처리하기자동화: 기기 간 통신을 위한 IP주소의 자동 할당 위 예시는 컴퓨터가 각각 연산, 정보, 자동화를 어떤 식으로 처리할 수 있는지를 보여준다. 즉, 컴퓨터에서 동작하는 프로그램이 어떻게 작동하는지에 대한 근거를 설명하는 학문이라 할 수 있다. 그렇다면 CS를 공부해야 하는 이유는 ..

CS 2025.02.25

EOF(End of File) 처리 방법

조건을 생략한 for(;;) 반복문이나, 종료 조건을 명시하지 않은 while( )문은 무한히 반복하게 된다. 이 무한루프는 콘솔에서 ctrl + c 를 입력해 강제로 종료할 수 있다. 하지만 의도하지 않은 상황에 무한 루프가 발생할 수도 있다. 그렇다면 이 무한루프를 안전하게 처리할 방법은 없을까?EOF상세 처리방법1. EOFEnd of File 의 약자로, 파일의 끝을 나타내는 표시  EOF 는 컴퓨터가 더 이상 읽어들일 데이터가 없음을 나타내는 상태이다. 이는 Input Stream 이 끝에 도달했다는 말과 같다. 컴퓨터가 EOF 를 만나면 읽기를 중단하는데, 이는 실제 파일에 저장되는 값이 아닌 운영체제로부터 받아오는 신호다. 운영체제는 파일의 정보를 관리하고, 프로그램은 파일을 읽을 때 이 정보..

TIL in JAVA 2025.02.19

I/O 란?

Input + Output I/O 의 의미System 클래스입출력 클래스 1. I/O 란?입출력을 의미하는 input 과 output 의 약자 입출력은 컴퓨터 혹은 여러 장치들에 데이터를 주고 받는 통신 작업을 말한다. 프로그래밍 언어에서는 데이터를 입력하고 원하는 방식으로 출력하는 행위라고 할 수 있다. 그렇다면 Java에서 입출력을 하기 위해 어떤 것들을 알아야 할까?  2. System 클래스 입출력과 오류, 외부에서 정의된 데이터에 접근하기 위한 필드와 메서드가 존재하는 클래스 System은 Java에서 자체 제공하는 클래스로 유용한 필드와 메서드가 존재한다. 어떤 데이터를 입력하고 출력하고자 할 때, System 을 호출해 내부에 있는 in 혹은 out 을 사용해야한다. 예)   System.i..

TIL in JAVA 2025.02.16