CS 41

동기식 입출력과 비동기식 입출력

동기식 입출력 (Synchronous I/O) 동기식 입출력 방식에서는 I/O 요청 후 I/O 작업이 완료된 후에야 제어권이 유저 프로그램으로 넘어간다. 구현 방법 동기식 입출력은 두 가지 방식으로 구현이 가능하다. 1. I/O 작업이 끝날 때까지 CPU를 유휴상태로 낭비시킨다. 이렇게 할 경우 한 번에 하나의 I/O 작업만 일어날 수 있다. 2. I/O 작업이 끝날 때까지 I/O 요청을 한 프로그램에게서 CPU를 빼앗는다. I/O 처리를 기다리는 대기큐에 해당 프로그램을 추가하고 CPU는 다른 프로그램에게 넘긴다. 비동기식 입출력 (Asynchronous I/O) 비동기식 입출력 방식에서는 I/O 작업이 시작된 후에 해당 작업이 끝나기를 기다리지 않고 제어권이 I/O 요청을 한 프로그램에게 즉시 넘어간..

CS/운영체제(OS) 2022.04.18

운영체제의 이중연산모드 : 유저 모드, 커널 모드

두 가지 모드가 존재하는 이유 유저 프로그램을 잘못 수행해서 다른 프로그램이나 운영체제 자체에 피해가 생기는 걸 방지하기 위해 보호 장치를 해둔 것이라고 보면 된다. 두 가지 모드의 구분 1. 유저 모드 : 유저 프로그램을 실행한다. 시스템 데이터에 접근이 제한되며 하드웨어에 직접 접근할 수 없다. 2. 커널 모드 : 모니터 모드라고도 하며 OS 코드나 커널 모드 코드를 실행한다. 보안을 해칠 수 있는 중요한 명령어는 커널 모드에서만 수행 가능한 '특권명령'으로 규정된다. 모든 I/O 명령은 특권 명령이다. Mode bit 하드웨어적으로 구현된 두 가지 모드의 연산을 지원하기 위해 쓰이는 비트다. 1은 유저 모드, 0은 커널 모드를 나타낸다. Interrupt나 Exception이 발생하면 하드웨어가 m..

CS/운영체제(OS) 2022.04.18

운영체제 개념, 기능: 인터럽트, CPU 스케줄링, 메모리 관리, 디스크 스케줄링

운영체제란? 운영체제란 하드웨어 바로 위에 설치되어 사용자나 다른 모든 소프트웨어와 하드웨어를 연결해주는 역할을 하는 소프트웨어 계층이다. 좁게는 컴퓨터 메모리에 상주하는 커널을 의미하며, 넓게는 커널과 각종 시스템 유틸리티를 포함한 개념이다. 운영체제의 목적 - 직접 다루기 복잡한 하드웨어를 대신 다루어 주어서 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다. - 컴퓨터 시스템의 자원(CPU, 메모리, I/O 장치 등)을 효율적으로 관리한다. 운영체제의 기능 1. 인터럽트 처리가 빠른 CPU와 느린 I/O 장치(키보드, 프린트 등) 간 속도 차이를 조절한다. 인터럽트가 들어오면 운영체제가 CPU를 제어한다. 즉, 운영체제로 CPU 제어권이 이양되는 것이다. - 타이머 인터럽트 프로세스들에게 C..

CS/운영체제(OS) 2022.04.17

Sliding Window 알고리즘

슬라이딩 윈도우 알고리즘이란? 고정된 사이즈의 윈도우를 이동시키면서 윈도우 내의 데이터를 이용해 문제를 푸는 알고리즘. 특정 범위 내의 값들을 비교할 때 사용할 수 있다. 유사한 알고리즘으로는 투 포인터가 있는데, 투 포인터는 대개 정렬된 배열에 이용되며 부분 범위의 사이즈가 고정되어 있지 않다는 점에서 슬라이딩 윈도우와 다르다. 글로만 봐서는 쉽게 이해하기 힘들 수 있기에 (나같은 경우에는 슬라이딩 윈도우 구현 코드를 보고도 한 번에 이해하기가 힘들었다.) 수월한 이해를 돕기 위해 구체적인 예시 문제를 가져와서 설명해보겠다. 예제: Leetcode 3. Longest Substring Without Repeating Characters 이 문제는 제목에서도 알 수 있듯이, string이 주어지면, 중복..

CS/알고리즘 2022.04.14

Floyd's Cycle Detection 알고리즘

플로이드의 순환 찾기 알고리즘은 포인터 두 개를 이용해 트리 내에 존재하는 사이클을 빠르게 찾을 수 있는 알고리즘이다. 개념 1. slow와 fast라는 이름을 가진 포인터 두 개를 사용해 각각 한 칸, 두 칸씩 이동시킨다. 2. 둘 중 어느 것도 null값에 도달하기 전까지 반복해서 이동시키면서 두 포인터가 만나는 지점이 있는지 매번 확인한다. 이때 만약 사이클이 없다면, 각자 다른 간격으로 이동하는 두 포인터는 만나지 않고 리스트의 끝에 도달한다. 그러나 만약 사이클이 있다면, 리스트의 끝에 도달할 수 없기 때문에 반복해서 돌다가 특정 지점에서 만나게 된다. 구현 코드 //관련 문제: https://leetcode.com/problems/linked-list-cycle/ /** * Definition..

CS/알고리즘 2022.04.07

ARP(Address Resolution Protocol)와 MAC, IP address

ARP란? Address Resolution Protocol(ARP)은 IP 주소를 MAC 주소로 변환하는 데에 쓰이는 프로토콜이다. MAC 주소와 IP 주소 IP 주소 - 네트워크 계층인 3계층에서 forwarding에 쓰이는 주소로, IPv4 주소는 32bit이고 IPv6 주소는 128bit이다. - datagram(3계층의 PDU, Packet Data Unit)를 destination 네트워크로 보내기 위해서 쓰임. - 인터넷에 연결된 호스트나 라우터의 인터페이스에 할당된 주소이기 때문에 장소를 이동하면 주소가 변화함. 컴퓨터가 아니라 네트워크에 할당된 주소인 것. - 우리가 이사를 가면 우편주소가 변화하는 것과 비슷함. MAC 주소 - 링크 레이어, 2계층에서 같은 네트워크 내의 한 interf..

CS/네트워크 2022.03.29

e-mail protocol: SMTP, POP3, IMAP이란?

우선 프로토콜이란, 어떤 행위를 할 때 필요한 규칙과 형식 등을 정해놓은 것이다. 아주 간단한 예를 들면, 친구와 쪽지를 보낼 때 맨 처음에는 본인 이름을 쓰고 한 줄을 띄운 후에 하고 싶은 말을 적기로 하는 것도 일종의 프로토콜이라고 할 수 있다. 이메일 프로토콜인 SMTP와 POP3, IMAP 은 이메일 메시지를 발송하고 수신할 때 사용하는 형식과 송수신 규칙을 정해놓은 것이다. 이때 우리는 이메일 메시지를 작성하여 메일 서버에게 전송하는 행위를 하는 일개 사용자를 Mail User Agent(MUA)라고 칭하고, outgoing, incoming 메시지를 저장하고 이메일을 전달하는 서버를 Mail server 혹은 Mail Transfer Agent(MTA)라고 부른다. 메일을 발신하려는 MUA는 ..

CS/네트워크 2022.01.11

기존의 얼굴 인식 모델들(FaceNet, VGG-Face)을 이용해 한국인 얼굴 인식해보기

기존의 얼굴 인식 모델들을 이용하여 한국인 얼굴을 인식해보기 졸업프로젝트로 기획하고 있는 서비스를 구현하기 위해 기존의 얼굴 인식 모델들인 FaceNet, VGG-Face, OpenFace 등으로 한국인 얼굴 인식도 높은 정확도로 수행할 수 있는지 검증하는 절차가 필요했다. 만약 기존의 모델로는 동양인 특히 한국인의 얼굴 인식에서 높은 정확성을 기대할 수 없다면, 별도로 한국인 데이터셋으로 학습을 시키거나 우리가 직접 얼굴 인식 모델을 만들어야 하기 때문이다. DeepFace 프레임워크 우선 여러 얼굴 인식 모델들 간의 비교를 위해 파이썬의 DeepFace 프레임워크를 사용했다. DeepFace는 다양한 검증된 모델들을 wrapping하고 있는 경량의 하이브리드 face recognition 프레임워크이..

CS/기계학습(ML) 2021.11.24

Face Detection과 Face Recognition의 차이

Face Detection 개념 정리 얼굴 인식에는 다양한 용어들이 사용된다. Face Detection과 Face Recognition뿐만 아니라 Face verification, Face Identification이 있다. 이러한 용어들을 정리해두었는데도 사용할 때마다 헷갈려서 블로그에 다시 정리한다. 1. Face Detection 우선 face detection은 가장 넓은 개념으로, 사람의 얼굴 자체를 감지하는 일이다. 사진이나 영상에서 사람 얼굴이 있는지, 무엇이 얼굴인지 찾아내는 것 말이다. 구체적인 작업을 예시로 들자면, 카메라가 화면에서 얼굴을 찾고 거기에 포커싱을 맞추는 작업이 될 수 있겠다. 예시 사진은 다음과 같다. 2. Face Recognition face recognition은..

CS/기계학습(ML) 2021.11.23

MySQL 테이블 컬럼명 변경 방법 & 오류나는 경우 해결법

MySQL 테이블 컬럼명 변경시 오류나는 경우 해결법 MySQL 테이블 컬럼명 변경이라고 치면 나오는 방법은 대개 아래와 같다. alter table 테이블명 change 기존컬럼명 새로운컬럼명 새로운컬럼타입; 그런데 이 방법이 오류가 나는 경우가 있다.내가 접했던 오류는 ALGORITHM=COPY is not supported. Reason: Columns participating in a foreign key are renamed. Try ALGORITHM=INPLACE이다. 바꾸려는 컬럼이 하필 pk라 다른 테이블에서 fk로 쓰고 있던 것이 패착이었다. 저 오류를 그대로 치니까 제일 먼저 나온 stack overflow에서 내놓은 해결법은 그냥 primary key랑 foreign key 드랍하고 ..