Study in SSAFY

    [자료구조] Queue, Stack, Deque

    [자료구조] Queue, Stack, Deque

    1. Stack 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조이다. 나중에 들어온게 먼저 나가는 후입선출(LIFO, Last In First Out) 방식이다. 2. Queue "줄을 서서 기다린다." 라는 사전적 의미를 가지고 있다. 먼저 들어온게 먼저 나가는 선입선출(FIFO, First In First Out) 방식이다. 3. Deque Double-ended Queue(양단 큐)라는 뜻으로, Stack와 Queue의 장점을 합쳐놓은 자료구조이다. 양쪽 끝에서 삽입과 삭제가 모두 가능하다는 특징이 있다. Deque Interface는 다음과 같이 크게 3가지 기능(추가, 삭제, 조회)을 제공한다. 1. 추가 Type Method Description boolean add(E e) 이 dequ..

    [자료구조] ArrayList vs LinkedList

    [자료구조] ArrayList vs LinkedList

    Java에서 List 인터페이스를 사용할 때 대표적으로 쓰이는 클래스가 ArrayList와 LinkedList 입니다. 두 클래스의 특성과 어떠한 차이가 있는지 알아보겠습니다. ArrayList 1. 내부 구조 배열을 사용하여 구현합니다. 2. 추가, 삭제, 조회 인덱스 기반으로 데이터에 접근 가능합니다. 요소가 추가될 때마다 배열의 크기를 동적으로 조절한 후 새로운 요소를 추가합니다. 3. 메모리 사용 내부 배열의 크기를 늘리거나 줄일 때마다 새로운 배열을 할당한 후 기존 배열을 복사해야 합니다. 따라서 메모리 사용이 불규칙해질 수 있습니다. LinkedList 1. 내부 구조 노드들의 연결 리스트로 구현되어 있습니다. 각 요소는 링크로 연결되어 있으며, 새로운 요소를 추가할 때마다 새로운 노드를 만듭..

    [운영체제] 파일 시스템

    [운영체제] 파일 시스템

    ========== 1. File and File System File A named collection of related information 비휘발성의 보조기억장치(ex 하드디스크)에 저장되는 단위 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해 줌 메모리는 주소를 통해서 접근 ↔ 파일은 이름을 통해서 접근 Operation create, read, write, reposition (lseek), delete, open, close 등 파일의 연산중 reposition (lseek)는 파일의 읽고 있는 포인터를 수정하는 것 open, close를 하는 이유: 파일의 메타데이터를 메모리 올리고 내리는 작업 File attribute ( = metadata) 파일 자체..

    [Java] 십진수를 이진수로 변환하기(int to String) / 이진수를 십진수로 변환하기(String to int)

    [Java] 십진수를 이진수로 변환하기(int to String) / 이진수를 십진수로 변환하기(String to int)

    십진수를 이진수로 만드는 원리를 알고 있다면 이를 코드로 구현하는 것은 어렵지 않습니다. 다만 그 과정을 코드로 매번 구현하는 것은 귀찮고 비효율적입니다. Java에서 Integer와 String 클래스는 이를 효율적으로 해결할 수 있는 메소드를 제공합니다. 1. 십진수를 이진수로 변환(int to String) int num = 31; System.out.println(Integer.toBinaryString(num)); > 11111 또한, 앞 자리를 원하는 만큼 0으로 채우는 방법 또한 존재합니다. int num = 31; System.out.println(String.format("%8s", Integer.toBinaryString(num)).replaceAll(" ", "0")); > 00011..

    [운영체제] 프로세스 동기화

    [운영체제] 프로세스 동기화

    1. Race Condition Race Condition(경쟁 상태) 여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황 공유 데이터에 동시에 접근하는 행위는 데이터의 불일치 문제를 발생시킬 수 있음 Race condition을 막고 일관성을 유지하는 것이 필요 -> 협력 프로세스 간의 실행 순서를 정해주는 동기화(Synchronization)가 필요 대표적으로 다음 세 경우에서 Race Condition이 발생 가능 1. kernal 수행 중 인터럽스 발생 시 count++과 count--가 모두 반영되어 count가 초기값을 유지하는 것이 의도이다. 하지만 Load를 한 후에 Interrupt가 발생하면 Interrupt의 결..

    [운영체제] 프로세스

    [운영체제] 프로세스

    프로세스의 개념 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 프로세스의 상태 (Process State) 프로세스는 상태(state)가 변경되며 수행된다. Running CPU를 잡고 instruction을 수행 중인 상태 Ready CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고) Blocked (wait, sleep) CPU를 주어도 당장 instruction을 수행할 수 없는 상태 Process 자신이 요청한 event(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태 New 프로세스가 생성 중인 상태 Terminated 수행(execution)이 끝난 상태 Suspended (stopped) 외부적인 이유로 수행이 정지된 상태. ex..

    [컴퓨터 구조] 범용 레지스터 구조

    [컴퓨터 구조] 범용 레지스터 구조

    중앙처리장치(CPU)의 주요 요소 1. 기억장치: 레지스터의 집합, 데이터의 임시 저장소 2. 제어장치: CPU 명령어 처리 회로의 집합, 논리 게이트와 요소들로 구성. 명령어 따라 연산 제어 수행 3. 연산장치: ALU(산술연산, 논리연산, 시프트 연산 수행) ALU와 레지스터의 집합 관계 어떤 레지스터에서 데이터를 가져와 ALU에서 계산한 다음, 어떤 레지스터로 보낼 지 정하는 것이다. 7개의 레지스터와 외부 Input이 있고, ALU는 2개의 데이터를 받는다. 이 2개의 데이터는 8개의 입력인 MUX로부터 나온다. 어떤 연산을 할 지는 OPR로 결정한다. 결과가 어떤 레지스터로 갈지 3x8 디코더를 이용해서 load한다. ALU 제어를 위한 제어 워드 SELA, SELB: ALU 입력을 결정한다. ..

    [컴퓨터 구조] 보수(Complement)

    [컴퓨터 구조] 보수(Complement)

    보수(Complement) 보충을 해주는 수를 의미한다. 주로 뺄셈과 논리 계산에 사용한다. 이진법을 예로 들면, 어떤 이진수를 커다란 2의 제곱수에서 빼서 얻은 이진수를 2의 보수라 한다. 2의 보수 (Two's Complement) 주어진 이진수보다 한 자리 높고, 가장 높은 자리가 1이며, 나머지가 0인 수에서 주어진 수를 빼서 얻은 수가 2의 보수이다. 대부분의 산술연산에서 원래 주어진 숫자의 음수처럼 취급된다. 예를 들어 8비트로 이진수를 표기할 때는 0부터 255까지의 숫자를 나타낼 수 있다. 하지만 2의 보수법을 사용하면, 맨 앞 비트를 부호 비트로 사용하여 -128부터 127까지의 숫자를 나타낼 수 있다. (맨 앞이 0이면 양수, 1이면 음수) 2의 보수 계산법 다음과 같은 두 가지 과정만..