본문 바로가기

CS(Computer Science)

(32)
CS Study : 11주차 - 프로세스 동기화 프로세스 동기화 프로세스 동기화는 두 개 이상의 프로세스가 공유된 데이터에 동시 접근하면 데이터 중복이 발생할 수 있기 때문에 데이터 일관성을 유지하기 위한 매커니즘이다. Race Condition(경쟁 상태) 여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을 말한다. 대표적으로 세 경우에서 경쟁 상태가 발생할 수 있다. 1. 커널 모드로 인터럽트가 발생하는 경우 커널 모드의 수행이 끝나지 전에는 인터럽트를 받지 않도록 하는 방법으로 문제를 해결할 수있다. 2. 프로세스가 시스템 콜을 호출해서 커널 모드로 수행 중인데 문맥 교환이 발생하는 경우 두 프로세스의 주소 공간에선느 데이터를 공유하지 않지만, 시스템 콜을 수행하는 동안에..
CS Study : 11주차 - Synchronous(동기) / Asynchronous(비동기) Synchronous(동기) 동기 방식은 클라이언트(Client)인 내가 동작시킨 어떠한 특정 실행 흐름 안에서 서버(Server)라고 통칭하는 모든 것들에 대해서 요청(Request)을 보냈을 경우, 이에 대한 응답(response)이 오고 난 것을 확인한 후에 다음 동작을 하는것을 말한다. 순차적이고 직렬적으로 주어진 일을 처리하는 것이다. Asynchronous(비동기) 비동기 방식은 클라이언트(Client)인 내가 동작하고 있는 어떠한 프로그램의 실행 흐름 안에서 서버(Server)의 총칭에 대하여 요청(Request)을 보낼 경우, 이에 대한 응답(response)이 오는 것을 따로 확인하지 않고 다음 동작을 하는 것을 말한다. Blocking(블록) 어떤 함수를 호출 했을 떄, 원하는 작업들을..
CS Study : 10주차 - 스케줄러(Scheduler) / CPU 스케줄러 스케줄러(Scheduler) 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할을 수행한다. 프로세스를 스케줄링을하기 위한 Queue는 세 가지 종류가 존재 한다. Job Queue - 시스템 안의 모든 프로세스의 집합 Ready Queue - 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue - Device I/O 작업을 대기하고 있는 프로세스의 집합 스케줄러 종류 장기 스케줄러(Long-term scheduler or job scheduler) 디스크와 메모리 사이의 스케줄링을 담당 몇개의 프로그램이 올라갈 것인지를 제어 - degree of Multiprogrammin..
CS Study : 9주차 - 멀티 프로세스와 멀티 스레드 멀티 프로세스 하나의 어플리케이션을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다. 특징 여러개의 자식 프로세스 중 하나에 문제가 발생해도 다른 자식 프로세스에 영향이 확산되지 않기 때문에 안정성이 좋다. 구현이 비교적 간단하고, 각 프로세스들이 독립적으로 동작하여 자원이 서로 다르게 할당된다. 프로세스 간 통신을 하기 위해서는 IPC를 통해야 한다. IPC(Inter Process Communication) - 프로세스들 간의 의사소통 하는 것 메모리 사용량이 많다. 스케줄링에 따른 문맥교환이 많아지고, 성능 저하의 우려가 있다. 멀티 스레드 하나의 어플리케이션을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다. 사용자와 상호작용하는..
CS Study : 9주차 - 프로세스와 스레드 프로세스(Process) 프로세스는 실행중에 있는 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 스케줄링의 대상이 되는 작업과 같은 의미로 쓰인다. 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데, 실제로는 스레드 단위로 스케줄링을 한다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. 프로세스의 문맥(context) CPU 수행 상태를 나타내는 하드웨어 문맥 프로세스의 메모리 영역 Code 영역 - 실행할 프로그램의 코드나 명령어들이 기계어 형태로 저장된 영역, CPU는 코드영역에 저장된 명령어들을 하나씩 처리한다. Data 영역 - 코..
CS Study 8주차 : SQL vs NoSQL 관계형 데이터베이스(SQL) 관계형 데이터베이스는 데이터베이스 유형중 하나이다. 고정된 행과 열로 구성된 테이블에 데이터를 저장한다. 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입 가능하다. 특정한 형식을 지키기 때문에 데이터를 정확히 입력했다면 데이터를 사용할 때 매우 수월하다. 관계형 데이터베이스에서는 테이블 간의 관계를 직관적으로 파악할 수 있다. 관계형 데이터베이스 관리 시스템(RDBMS) MySQL Oracle SQLite MariaDB PostgresSQL 정리 관계형 데이터베이스는 테이블 기반으로 데이터를 저장하고 SQL을 사용하여 데이터를 다룬다. 간단하게 말하면 SQL은 관계형 데이터베이스 전용 프로그래밍 언어인 것이다. 테이블의 ..
CS Study 8주차 : SQL Injection SQL Injection SQL Injection이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위이다. 공격 종류 및 방법 Normal SQL Injection 논리적 에러를 이용한 SQL Injection으로 가장 많이 쓰이고 대중적인 공격 기법이다. 위 사진을 예시로 들면 1번 쿼리문은 로그인 시 많이 사용되는 SQL 구문이다. 해당 구문에 임의의 SQL 구문을 주입을 하게 되면 내용이 바뀌게 된다. 예시에서 주입한 것은 'OR 1=1 -- 로 User 테이블에 있는 모든 정보를 조회하게 됨으로써 가장 먼저 만들어진 계정으로 로그인에 성공하게 되는 것이다. Union based SQL Injection U..
CS Study 8주차 : 교착상태(Dead Lock) 교착상태란? 교착상태는 상호 배제에 의해 나타나는 문제점으로 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미한다. 교착상태 발생 조건 교착상태가 발생하기 위해서는 네가지의 조건이 충족이 되어야 하며, 하나라도 충족되지 않으면 발생하지 않는다. 상호배제(Mutual Exclusion) 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 한다. 점유와 대기(Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다. 비선점(Non-preemption) 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 ..