Studying/CS Knowledge 22

인터럽트(Interrupt)

https://refreshment-wg.tistory.com/23?category=1005918 운영체제의 구조와 원리 1. OS의 작업방식 Windows와 Mac Os같은 운영체제가 등장하기 전에는 MS-DOS라는 운영체제를 사용했습니다. MS-DOS는 Single tasking(단일 작업)밖에 하지 못했습니다. 예를 들어 수행해야 할 작업-1과 작업 refreshment-wg.tistory.com OS의 구조와 원리라는 글에서 인터럽트의 동작에 대한 설명이 부족하여 추가로 작성했습니다. 먼저 Trap과 Interrupt의 차이를 짚고 가겠습니다. Trap은 S/W에서 일어나는 인터럽트라고 보면 됩니다. 소프트웨어적 흐름의 변화(프로그램 내에서 일어나는 Err)라고도 합니다. 발생시점이 프로그램의 일..

프로세스와 스레드의 차이

https://refreshment-wg.tistory.com/29?category=1005918 스레드와 동시성 1. Thread Thread(스레드)는 어떤 프로세스 내에서 실행되는 흐름을 말합니다. int main(void) { int n = 0; int m = 10; printf("%d\n", n * m); while(n < m) n++; printf("END\n"); } 위와 같은 코드는 하나.. refreshment-wg.tistory.com 이 글은 스레드와 동시성에서 프로세스와 스레드의 차이를 자세히 기술하지 않아 작성했습니다. 스레드는 어떤 프로세스 내에서 실행되는 흐름을 의미한다고 했습니다. 먼저 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 ..

Json & XML

1. Json Json(JavaScript Object Notation)라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 데이터 교환 방식입니다. JS에서 객체를 만들 때 사용하는 표현식을 의미하기도 하며, 사람과 기계 모두 이해하기 쉽고 용량이 작아 XML(eXtensible Markup Language)을 대체해서 데이터 전송에 많이 사용됩니다. Json은 데이터 포맷일 뿐, 어떠한 통신방법과 프로그래밍 문법도 아닌 단순 데이터를 표시하는 표현 방법일 뿐인 것입니다. 1.1 JSON 특징 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용 JS 객체 표기법과 아주 유사 JS를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있는 이점이 있다. JSON 문..

Database

1. Database 데이터베이스의 사전적 의미는, 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합입니다. 줄여서 DB라고도 하며 특정 다수의 이용자들에게 필요 정보를 제공하거나 조직 내 필요로 하는 정보를 체계적으로 축적해 조직 내 이용자에게 필요 정보를 제공하는 정보 서비스 기관의 심장부입니다. 데이터베이스가 존재하기 이전에는 파일 시스템을 이용해 시스템을 관리했습니다. (현재도 부분적으로 사용됨) 데이터를 각각의 파일 단위로 저장하며 이러한 일들을 처리하기 위한 독립적인 애플리케이션과 상호 연동이 되어야 합니다. 이 때 문제점은 데이터 종속성과 중복성, 데이터 무결성 입니다. 2. 특징 1) 독립성 물리적 독립성 : DB사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 ..

TCP & UDP

1. UDP(User Datagram Protocol) UDP는 비연결형 프로토콜로 IP 데이터그램을 캡슐화하여 보내는 방법과 연걸설정을 하지 않고 보내는 방법을 제공합니다. 또한 흐름제어, 오류제어 혹은 손상된 세그먼트의 수신에 대한 재전송을 하지 않고 이 모두가 사용자 프로세스의 몫입니다. UDP가 행하는 것은 포트들을 사용해 IP프로토콜에 인터페이스를 제공하는 것입니다. UDP가 특별히 유용한 분야는 클라이언트-서버 상황인데, 클라이언트는 서버로 짧은 요청을 보내고 짧은 응답을 기대합니다. 이때 만약 요청 혹은 응답이 손실된다면 클라이언트는 time out되고 다시 시도할 수 있습니다. 코드가 간단할 뿐만 아니라 TCP처럼 초기 설정에서 요구되는 프로토콜에서보다 적은 메시지가 요구됩니다. UDP를 ..

데이터 전달 원리

1. 데이터의 기술적 개념 우선 데이터의 기술적 개념부터 생각해보자. 우리가 흔히 말하는, 컴퓨터 화면을 통해 볼 수 있는 모든 데이터는 컴퓨터 밖 세상의 것들과 크게 다르지 않다. 책처럼 읽을 수 있는 인터넷 신문기사의 글자들, 눈으로 본 것과 똑같이 찍혀 sns에 업로드 된 사진들... 이런 것들을 우리는 데이터라고 부른다. 너무 당연하게 받아들여온 개념이어서일까? 우리는 그것이 사실은 수많은 0과 1로 이루어진 숫자에 불과하다는 사실을 쉽게 잊는다. 그래서 데이터가 어떻게 전달되는가? 를 생각해보자니 너무 막연하고 어렵게 느껴지는 것이다. 데이터는 0혹은 1로 이루어진 숫자이고, 컴퓨터는 이진법의 숫자를 전기의 켜짐과 꺼짐으로 표현할 수 있다. 즉, 데이터는 아주 긴 전기 신호 인 것이다. 이렇게 ..

HTTP와 HTTPS

이 글은 'HTTP란?'글에 대해 미흡한 점이 있어 추가로 작성했습니다. https://refreshment-wg.tistory.com/9 HTTP란? 1. HTTP? 저희가 주소창에서 볼 수 있는 HTTP(HyperText Transfer Protocol)는 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고 받을 수 있는 프로토콜을 말합니다. 클라이언트(사용자)가 브라우저(Ch refreshment-wg.tistory.com 1. HTTP의 문제점 먼저 HTTP는 평문 통신(암호 알고리즘의 입력 대상으로 예정이 된 암호화되지 않은 정보)이기 때문에 도청이 가능합니다. Wireshark라는 패킷 분석 프로그램으로 본 패킷입니다. (위가 HTTPS 패킷(198163), 아래가 HTTP 패킷(198787..

MVC pattern

1. MVC의 개념 MVC(Model View Controler)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 사용되는 소프트웨어 디자인 패턴 중 하나입니다. 위의 사진 과 같이 사용자가 Controller를 조작하면 Controller는 Model을 이용해 data를 가져오고 그 data를 바탕으로 시각적 표현(View)를 제어하여 사용자에게 전달하는 것입니다. 이는 UI로부터 비즈니스 로직을 분리하여 애플레케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다. 너무 추상적이기 때문에, 쇼핑 리스트 애플리케이션을 예로 각 요소에 대해 설명해보겠습니다. 사용자가 원하는 것은 각 항목의 이름, 개수, 가격의 목록입니다. M..

테스트 주도 개발(TDD)

1. Test-Driven Development TDD는 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스입니다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성합니다. 일단 테스트를 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거쳐 말 그대로 테스트가 코드 작성을 주도하는 프로세스입니다. Add a Test 테스트 주도형 개발에서는 새로운 기능을 추가하기 전에 테스트를 먼저 작성합니다. 테스트를 작성하기 위해 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 합니다. 이는 사용자 케이스와 사용자 스토리 등으로 이해할 수 있으며, 이는 개발자가 코드를 작성하기 전에 보다 요구사항에 집중할 ..

UI & API

1. UI UI(User Interface)는 컴퓨터라는 시스템과 사용하는 사람의 접점에 존재하며, 사람이 생각하는걸 컴퓨터에게 전달하는 입력 장치, 컴퓨터의 상태를 사람에게 전달하는 출력장치가 UI입니다. 말보다 실제로 예시를 들어 알아보는게 편하겠죠. 우리가 사용하는 컴퓨터의 화면입니다. 브라우저나 메신저를 사용하려면 마우스를 프로그램 위에 두고 클릭하여 사용하겠죠. 웹 브라우저에서는 버튼 및 스크롤바를 이용하여 어떤 링크로 이동하거나 내용을 볼 때 사용하게 되겠죠. 이 때, 사용하는 버튼 및 스크롤 프로그램 아이콘을 UI라고 하는 것입니다. 2. API UI가 사용자(User) 차원에서 시스템을 제어한다면, API(Application Programing Interface)는 개발자 차원으로 넘어가..