전체 글 243

[데이터베이스 개론] 02장. 데이터베이스 관리 시스템

데이터베이스 관리 시스템의 등장 배경 과거에는 데이터를 관리하기 위해 파일 시스템을 사용하였다. 파일의 생성, 삭제, 수정, 검색 기능을 제공하며 운영체제와 함께 설치되었다. 다만 다음과 같은 문제점이 발생하였다. 같은 내용의 데이터가 여러 파일에 중복 저장 : 데이터의 중복 저장이 가능하며 저장공의 낭비와 일관성, 무결성을 유지하기 어려움. 응용 프로그램이 데이터 파일에 종속적 : 응용 프로그램이 파일에 직접 접근하여 데이터를 처리하는 방식이기에 사용하는 파일의 구조를 변경하면 응용 프로그램도 함께 변경해야하는 데이터 종속성이 있음. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족 : 파일 시스템에선 동시 공유기능을 제공하지 않고, 보안에 대한 명확한 기준과 장애복구 기능이 따로 없음. 응용 ..

Summary 2022.01.16

[데이터베이스 개론] 01장. 데이터베이스 기본 개념

데이터베이스의 필요성 데이터와 정보 데이터는 현실 세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값으로써 자료라고 한다. 정보는 데이터를 의사 결정에 유용하게 활용할 수 있도록 처리하여 체계적으로 조작한 결과물이다. 데이터에서 정보를 추출하는 과정 또는 방법을 정보처리라고 한다. 정보처리는 데이터를 상황에 맞게 분석하거나 해석하여 데이터 간의 의미관계를 파악하는 것이다. 정보 시스템과 데이터베이스 조직 운영에 필요한 데이터를 수집하여 저장해두었다가 의사 결정이 필요할 때 처리하여 유용한 정보를 만들어주는 수단을 정보 시스템이라고 한다. 정보 시스템 안에서 데이터를 저장하고 있다가 제공하는 핵심역학을 데이터베이스가 담당한다. 데이터베이스의 정의와 특징 데이터베이스의 정의 데이터베이스, DB는 특정 조..

Summary 2022.01.16

[Java] Stream과 사용시 주의할 점

Stream이란 Stream(스트림)은 자바 8버전부터 추가된 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식(함수적 스타일)으로 처리할 수 있도록 도와주는 반복자이다. 자바 7버전까지는 컬렉션에서 요소를 순차적으로 처리하기 위해 Iterator반복자를 사용하였다. 자바 8버전부터는 Straeam이 등장하였다. Stream은 Iterator와 비슷한 역할을 하는 반복자이지만, 람다식으로 요소 처리 코드를 제공하는 점과 내부 반복자를 사용하기에 병렬 처리가 쉽다는 점 그리고 중간 처리 + 최종 처리의 파이프라인 작업을 수행한다는 차이가 있다. Stream의 특징 람다식으로 요소 처리 코드 제공 Stream이 제공하는 대부분의 요소 처리 메서드는 함수적 인터페이스 매개 타입을 가지기 때문에 람다식 ..

Java&Web 2022.01.14

[운영체제와 정보기술의 원리] 09장. 디스크 관리

디스크의 구조 디스크 외부에서는 디스크를 1차원 배열처럼 취급하게 된다. 이 공간들을 논리블록이라고 하고 데이터가 저장될때에도 논리블록 단위로 젖아된다. 각 논리 블록이 저장되는 디스크 내의 물리적 위치를 섹터라한다. 디스크의 물리적 구조는 마그네틱 원판으로 구성된다. 각각 원판은 트랙으로 구성되고 트랙은 섹터로 나뉘며 섹터에 최소한의 단위 정보가 저장된다. 여러 원판에서 같은 동일한 트랙들의 집합을 실린더라 한다. 디스크 스케줄링 디스크에 대한 접근시간은 탐색시간, 회전지연시간, 전송시간으로 구분된다. 탐색시간은 디스크 헤드를 해당 실린더 위치로 이동시키는데 걸리는 시간이다. 회전지연시간은 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간이다. 전송시간은 해당 섹터가 헤드 위치..

Summary 2022.01.03

[운영체제와 정보기술의 원리] 08장. 가상메모리

운영체제는 보통 모든 모든 프로그램에게 공평하게 같은 크기의 메모리를 할당하기보다는 몇몇 프로그램들에게 집중적으로 메모리를 할당 후 시간이 지나면 메모리를 회수해서 다른 프로그램들에게 다시 집중적으로 할당하는 방식으로 동작한다. 프로세스의 주소 공간 전체가 메모리에 올라와있지 않고, 수행할 부분만 메모리에 올라가고 나머지는 디스크의 스왑영역에 있다가 교체하는 방식이다. 추가적으로 운영체제는 프로그램이 물리적 메모리를 고려할 필요 없이 자기 자신만의 메모리를 사용하는 것처럼 0번지 부터 시작하는 자신만의 메모리 공간인 가상 메모리를 제공한다. 가상메모리는 방식에 따라 요구 페이징과 요구 세그먼테이션 방식으로 구현된다. 요구 페이징 요구 페이징이란 프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한꺼번에..

Summary 2022.01.02

[CS] 동기와 비동기 그리고 블로킹과 논블로킹

프로그래밍을 하거나 컴퓨터 과학을 학습할 때, 동기와 비동기 그리고 블로킹과 논블로킹이란 단어들을 쉽게 접할 수 있다. 다만 '동기==블로킹', '비동기==논블로킹'이란 개념을 쉽게 가질 수 있는데, 이는 잘못된 개념이다. 두개념들 사이에는 서로 연관관계가 없고, 별개의 개념이다. 두 개념은 서로 다른 관점을 가지고 있다. 간단히 정리하자면 다음과 같다. 동기 vs 비동기 : 처리해야 할 작업들을 어떠한 흐름으로 처리 할 것인가에 대한 관점 (2개이상의 주체) 블로킹 vs 논블로킹 : 처리되어야 하는 작업이 전체적인 작업 흐름을 막느냐 안막느냐에 대한 관점 (2개이상의 대상) 이렇게 두 개념이 작업에 대해 서로 바라보는 관점이 다르기때문에 이 두 개념은 비동기+논블로킹, 동기+논블로킹, 비동기+블로킹, ..

Computer Science 2021.12.29

[운영체제와 정보기술의 원리] 07장. 메모리 관리

컴퓨터에서는 byte 단위로 메모리 주소를 부여하기 때문에 만일 32비트 주소 체계를 사용하면 2^32바이트만큼의 메모리 공간에 서로 다른 주소를 할당한다. 또한 내부적으로 보통 4KB(2^12byte) 단위로 묶어서 페이라는 하나의 행정구역을 만들어서 처리한다. 주소 바인딩 프로그램이 메모리에 적재되면 프로세스마다 프로세스를 위한 독자적인 주소 공간이 생긴다. 이를 논리적 주소(Logical Address) 혹은 가상 주소(Virtual Address)라고 한다. CPU는 이 논리적 주소에 근거해 명령을 실행한다. 논리적 주소는 각 프로세스마다 독립적이며 0부터 가지고, 이와 반대로 물리적 주소는 메모리에 실제로 올라가는 위치이다. CPU가 기계어 명령을 수행하기 위해 논리적 주소를 참조하면, 논리적 ..

Summary 2021.12.27

[운영체제와 정보기술의 원리] 06장. CPU 스케줄링

CPU는 프로그램의 기계어 명령을 처리하는 장치이다. 프로그램이 메모리에 올라가면 PC에 수행할 코드의 메모리 주소값을 가지게 되고, CPU는 PC가 가리키는 주소의 기계어 명령을 하니씩 수행한다. 기계어 명령은 CPU 내에서 수행되는 명령, 메모리 접근을 필요로 하는 명령, 입출력을 동반하는 명령으로 나누어 볼 수 있다. CPU 내에서 수행되는 명령은 Add같은 것이 있다. 메모리 접근을 수행하는 명령은 Load, Store 명령이 있다. 입출력을 동반하는 명령은 디스크 읽기, 키보드 입력등이 있다. 다만 입출력 명령을 특권명령으로 규정하여 사용자 프로그램이 직접 수행할 수 없도록 하고, 운영체제를 통해 서비스를 대행하도록 한다. 사용자 프로그램은 CPU 작업과 I/O 작업의 반복으로 구성된다. 프로그..

Summary 2021.12.26

[운영체제와 정보기술의 원리] 05장. 프로세스 관리

프로세스의 개념 프로세스란 실행중인 프로그램으로써 디스크에 존재하는 프로그램이 메모리에 올라가 있는 형태이다. 프로세는 CPU를 획득해 코드를 수행하기도 하고, CPU를 반환하여 입출력을 하기도 한다. 이때 프로세스의 문맥(Context)를 이용하여 현재 어떤 상태에서 수행되고 있는지 필요한 정보를 얻을 수 있다. 프로세스의 문맥은 프로세스의 주소 공간(코드, 데이터, 스택)을 비롯해 레지스터에 어떤 값을 가지고 있는지와 시스템 콜등을 통해 커널에서 수행한 일의 상태, 그 프로세스에 관해 커널이 관리하고 있는 정보등을 포함한다. 다시 정리하면 프로세스의 문맥은 크게 하드웨어 문맥, 프로세스의 주소 공간, 커널상의 문맥으로 나눌 수 있다. 하드웨어 문맥은 CPU의 상태를 나타내는 PC값과 각종 레지스터 값..

Summary 2021.12.20

[운영체제와 정보기술의 원리] 04장. 프로그램의 구조와 실행

프로그램의 구조와 인터럽트 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역(코드, 데이터, 스택)이 메모리에 올라가 있어야 한다. 코드 영역은 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 부분이고, 데이터 영역은 전역 변수등 프로그램이 사용하는 데이터를 저장하는 부분이다. 스택 영역은 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사ㅣ용되는 공간이다. 프로그램은 메인함수에서 실행을 시작하고 다른 함수가 호출이 되면 그 위치로 점프해 그 함수를 실행하고 돌아오게 되는데 이때 돌아와야하는 지점을 스택에 저장한다. 인터럽트의 동작 원리도 함수의 호출과 비슷하다. 인터럽트가 발생하면 ..

Summary 2021.12.19