[트랜잭션과 무결성]
·
CS/Database
트랜잭션 트랜잭션은 데이터베이스에서 논리적인 기능을 수행하기 위한 작업의 단위이다. 데이터베이스에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리를 하나로 묶은 단위를 말한다. 이에 대한 특징은 원자성, 일관성, 독립성, 지속성이 있으며 이를 ACID 특징이라고 한다. 1) 원자성 원자성(atomicity)은 트랜잭션과 관련된 작업이 모두 수행되거나 모두 수행되지 않는 것을 보장하는 특징이다. 예를 들어 트랜잭션을 커밋했는데 문제가 발생하여 롤백하는 경우 모두 수행되지 않음을 보장한다. 또한, 트랜잭션 단위로 여러 로직을 묶을 때 외부 API를 호출하지 않는 것이 좋다. 만약 해야한다면 어떻게 해야 할 것인지에 대한 해결 방안을 마련해야하고 트랜잭션 전파를 매우 신경 써서 관리해야 한다. 커밋과 롤백 커밋(..
[CPU 스케줄링 알고리즘]
·
CS/OS
CPU 스케줄링은 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 프로그램이 실행될 때는 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 알고리즘은 CPU 이용률은 높게 하면서 주어진 시간에 많은 일을 수행하는 것이 목표이다. 즉, Ready Queue에 있는 프로세스를 적게, 응답 시간은 짧게 설정하는 것이 목표이다. CPU 스케줄링 알고리즘은 비선점형 방식과 선점형 방식으로 나뉜다. 비선점형 방식 비선점형 방식은 프로세스가 CPU 소유권을 스스로 포기하며, 강제로 프로세스를 중지하지 않는다. 따라서 컨텍스트 스위칭으로 인한 부하를 줄일 수 있다는 장점이 있다. 대표적으로 FCFS, SJF 그리고 우선순위 알고리즘이 있다. 1) FCFS (Fist C..
[프로세스 구조와 프로세스 통신]
·
CS/OS
프로세스와 스레드란? 프로세스 : 메모리에 올라간 프로그램을 말한다. 즉, 실행 중인 프로그램이다. 운영체제의 CPU 스케쥴러에 따라 CPU가 프로세스를 실행한다. 스레드 : 프로세스 내 작업의 흐름을 말한다. 프로세스의 상태 프로세스는 여러 상태 값을 가진다. 생성 상태 (create) 프로세스가 생성된 상태를 의미한다. fork() or exec() 함수를 통해 생성된다. 이때, PCB가 할당된다. fork: 부모 프로세스의 주소 공간을 그대로 복사하며, 새로운 자식 프로세스를 생성하는 함수 exec: 새롭게 프로세스를 생성하는 함수 대기 상태 (ready) 메모리 공간이 충분하지 않아 CPU 스케쥴러로부터 CPU 소유권이 넘어오기를 기다리는 상태를 의미한다. 메모리 공간이 충분하면 메모리를 할당받고..
[프로그램과 컴파일 과정]
·
CS/Computer Architecture
프로세스는 메모리에 올려진 프로그램을 말한다. 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 언어로 번역되어 실행될 수 있는 파일을 의미한다. 컴파일 과정 참고로, 위의 그림은 C언어 기반의 프로그램을 기준으로 컴파일 과정을 도식화한 것이다. (번역과 실행이 동시에 이루어지는 인터프리터 언어로 된 프로그램과 다르다) 전처리: #으로 시작하는 구문을 읽으면서 필요한 헤더 파일을 병합한다. 컴파일러: 소스코드를 어셈블리어로 변환해준다. 즉, 고수준 언어를 저수준 언어로 변환해주는 것이다. 이때, 오류를 처리하고 코드 최적화 작업을 한다. 어셈블러: 어셈블리어를 목적코드로 변환해준다. 즉, 기계어로된 파일로 변환해주는 것이다. 이때, 확장자는 운영처제마다 다른데, 리눅스에서는 .o 이다. ..
[메모리 관리]
·
CS/OS
운영체제가 대표적인 할 일 중 하나가 메모리 관리다. 컴퓨터 내의 한정된 메모리를 효율적으로 사용해야하는 것이다. 1. 가상 메모리 가상메모리는 메모리 관리 기법 중 하나이다. 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용자에게 큰 메모리처럼 보이게 만드는 것이다. 가상 메모리는 '페이지 테이블'로 관리된다. 속도 향상을 위해 TLB를 사용한다. 페이지 테이블 : 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있다. 가상 주소 : 가상적으로 주어진 주소 실제 주소: 실제 메모리 상에 있는 주소 TLB: CPU와 메모리 사이에 있는 주소 변환을 위한 캐싱 계층이다. 페이지 테이블 리스트를 보관하여 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시켜준다. 가상 주..
[메모리 계층]
·
CS/Computer Architecture
메모리 계층 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다. 높은 계층일수록 속도가 빨라지지만 가격에 비해 용량이 작아진다는 특징을 가진다. 이러한 계층이 있는 이유는 대표적으로 '경제성'과 '캐시' 때문이다. 예를 들어, 같은 용량이어도 HDD가 RAM보다 훨씬 싸게 살 수 있다. 이러한 경제성 때문에 계층을 두어 메모리를 관리한다. 메모리 계층구조는 우리가 일상생활 속에서도 쉽게 경험할 수 있다. 예를 들어서 어떤 프로그램을 실행하면 '로딩 중'이라는 이미지가 뜨는 것을 확인할 수 있는데, 이는 저장장치에 있는 데이터를 메모리로 이전하는 작업이 진행 중이라는 것을 의미한다. 캐시 캐시는 데이터를 미리 복사해놓는 임시 저장소를 말한다. 캐시에 데이터를 미리 복사해놓으면 다음 번에는 ..
[운영체제 역할과 구조]
·
CS/OS
[1] 운영체제란? 운영체제는 사용자와 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어다. 한정된 메모리나 시스템 자원을 효율적으로 관리함으로써 사용자가 컴퓨터를 쉽게 다룰 수 있게 해준다. [2] 운영체제의 역할 운영체제의 대표적인 역할은 네 가지가 있다. CPU 스케줄링과 프로세스 관리 CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원할당 및 반환을 관리한다. 메모리 관리 어떤 프로세스에 얼만큼 메모리를 할당할지 관리한다. 디스크 파일 관리 디스크 파일을 어떤 방법으로 보관할지 관리한다. I/O 디바이스 관리 IO 디바이스들 간에 데이터를 주고받는 것을 관리한다. [3] 운영체제 구조 GUI 사용자가 하드웨어와 상호작용할 수 있도록 해주는 사용자 인터페이스의 일종이다. E..
[HTTP 발전 과정]
·
CS/Network
HTTP는 애플리케이션 계층에서 사용되는 프로토콜로 웹 서비스 통신에 사용된다. HTTP는 HTTP 1.0부터 시작하여 현재 HTTP 3.0이다. 이런 발전 과정을 살펴보며 어떤 것들을 극복해왔고 보완했는지에 대해 자세히 알아보겠다. | HTTP 1.0 기본적으로 한 열결 당 하나의 요청을 처리하도록 설계되었다. 매 요청마다 3-way handshakes 작업을 해줘야하기 때문에 RTT가 증가한다는 단점이 있다. *RTT: 패킷 왕복 시간 RTT 증가 문제 해결 방법 RTT가 증가하는 문제를 해결하기 위한 방법은 이미지 스플리팅, 코드 압축, Base64 인코딩이 있다. 이미지 스플리팅 많은 이미지가 합쳐진 하나의 이미지를 다운받고, background-image의 position을 이용하여 이미지를 표..