목록분류 전체보기 (81)
우당탕탕 개발일지
내 프로젝트의 경우, 개발 환경은 다음과 같다.⚙️ React + Typescript + npm + Tailwind Tailwind를 처음 사용해보는 터라 설치부터 난관이었다. 프로젝트 초기 세팅Tailwind와 PostCSS를 개발 의존성으로 추가한다.npm install -D tailwindcss postcssnpm tailwindcss init -p 이 명령을 실행하면 두 파일이 생성되게 된다. 📁 tailwind.config.js📁 postcss.config.js [ tailwind.config.js ]/** @type {import('tailwindcss').Config} */export default { content: ["./src/**/*.{js,jsx,ts,tsx}"], them..
[C언어] IPC(1) (feat. 공유 메모리)1. IPC 프로세스는 완전히 독립된 실행 객체로 다른 프로세스에 문제가 발생하여도 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있는 만큼 서로간에 통신이 어렵다는 문제가 있다. 이를uj0791.tistory.com 1. Pipe파이프는 두 프로세스 사이에서 한 방향으로 통신할 수 있도록 인터페이스를 제공한다.파이프는 이름 없는 파이프(익명 파이프, annoymous pipe)와 이름 있는 파이프(named pipe)로 구분된다. 특별한 수식어 없이 그냥 파이프라고 하면 일반적으로 이름 없는 파이프를 의미한다. 이름 없는 파이프는 부모-자식 프로세스 간에 통신할 수 있게 해준다. ✅ pipe()#include int pipe(int fildes[2..
1. IPC 프로세스는 완전히 독립된 실행 객체로 다른 프로세스에 문제가 발생하여도 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있는 만큼 서로간에 통신이 어렵다는 문제가 있다. 이를 위해서 커널 영역에서는 IPC(Inter-Process Communication)라는 내부 프로세스간 통신을 제공하여 IPC 설비를 이용해서 프로세스 간 통신을 할 수 있다. 정보 공유여러 사용자가 동일한 정보에 엑세스할 필요가 있을 수 있다.가속화특정 작업(task)을 여러 개의 서브 작업(sub-task)로 쪼개어 프로세스의 병렬성을 키움으로써 처리 속도를 높일 수 있다.모듈화특정한 시스템 기능을 별도의 프로세스(스레드)로 구분하여 모듈화된 시스템을 구성할 수 있다.편의성다수의 사용자가 동시에 여러가지 작업을 수..
시그널 운영체제는 실행하고 있는 프로그램에 대해 예외적인 상황을 보고하기 위해서 시그널(signal)을 사용한다. 시그널은 비동기적으로 발생하며, 다음과 같은 3가지 경우에 발생한다.0으로 나누기처럼 프로그램에서 예외적인 상황이 일어나는 경우프로세스가 kill 함수와 같이 시그널을 보낼 수 있는 함수를 사용해 다른 프로세스에 시그널을 보내는 경우사용자가 Ctrl+C와 같은 인터럽트 키를 입력한 경우 시그널을 받은 프로세스가 이를 처리하는 방법은 다음과 같이 4가지이다.프로세스가 받은 시그널에 따라 기본 동작을 수행한다.대부분 시그널의 기본 동작은 프로세스를 종료하는 것이다.이외에 시그널을 무시하거나 프로세스의 수행 일시 중지/재시작 등을 기본 동작으로 수행한다.프로세스가 받은 시그널을 무시한다.프로세스가..
리눅스 가상 메모리 구조 가상 메모리는 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기의 한계가 있어, 디스크(ROM)의 일부를 확장된 RAM처럼 사용하기 위한 개념이다.실제 물리 메모리가 가지는 공간보다 더 큰 공간으로 확장할 수 있다.ram(주기억장치)이나 디스크, 레지스터 등의 공간을 연속적으로 가상 공간에 매핑할 수 있다.메모리 관리에 효율적이다. 가상 메모리의 단위는 페이지 단위로 관리되고, 물리 메모리는 프레임 단위로 관리된다. 페이지와 프레임은 동일한 사이즈를 가진다. MMU (Memory Management Unit)MMU(Memory Management Unit)는 가상 메모리를 사용하기 위한 하드웨어 장치로, 가상 주소(프로세스가 참조하는 주소)를 물리 주소(실제 메모리..
[C언어] 동기화 (feat. Mutex API 사용해 은행 잔고 프로그램 구현하기)1. Race Condition (경쟁 상태) 둘 이상의 실행 주체가 동시에 하나의 공유 자원에 접근하려고 경쟁할 때 발생하는 상태이다. 프로세스마다 실행 속도가 달라서 예상치 못한 결과를 초래할 수 있다.uj0791.tistory.com Rwlock API ✅ 읽기-쓰기 락 초기화 방법 1. 정적으로 할당된 읽기-쓰기 락 초기화 → 오류 검사가 수행되지 않는다.pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER; 2. 동적으로 할당된 읽기-쓰기 락 초기화pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_r..
1. Race Condition (경쟁 상태) 둘 이상의 실행 주체가 동시에 하나의 공유 자원에 접근하려고 경쟁할 때 발생하는 상태이다. 프로세스마다 실행 속도가 달라서 예상치 못한 결과를 초래할 수 있다. 이를 해결하기 위해서 공유 자원을 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화를 위한 대표적인 도구로 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다. 2. Critical Section (임계 구역)한번에 하나의 프로세스만이 진입해야 하는 특정 코드 영역으로 둘 이상의 실행 주체가 동시에 실행될 경우, 경쟁 조건을 발생시킬 수 있는 구간이다. 프로세스 코드 영역Critical Section 문제를 해결할 수 있는 방법은 다음 3가지 조건을 ..
프로세스(Proccess)사전적 의미: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 프로그램을 실행 시키면 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태이다. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다. 그래서 프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가게 되고, 운영체제로부터 시스템 자원(CPU)을 할당받아 프로그램 코드를 실행시켜 사용할 수 있게 된다.즉, 메모리에 올라와 실행되고 있는 독립적인 개체이자 시스템 자원을 할당받는 작업의 단위이다. 스레드(Thread)사전적 의미 : 프로세스 내에서 실행되는 여러 흐름의 단위 기술이 발전됨에 따라 프로그램이 복잡해지면서 프로세스 작업 하나만을 사용해서 프로그램을 실행하기에는 한계..