Skip to content
총 111개의 글이 있습니다.
futex(Fast Userspace muTEX)는 리눅스에서 제공하는 저수준 동기화 메커니즘이다. 사용자 공간에서 빠르게 락을 처리하고, 경합이 발생할 때만 커널로 진입하여 효율적인 동기화를 제공한다.
include &x3C;linux/futex.h>include &x3C;sys/syscall.h>
int futex(int *uaddr, int futex_op, int val, const struct timespec *timeout, int *uaddr2, int val3);include int futex(int *uaddr, int futex_op, int val, const struct timespec *timeout, int * 1. 프로세스와 구조체
프로세스는 프로그램 코드를 실행하면서 생기는 모든 결과물이다.
일반적인 의미: 실행 중인 프로그램
포괄적인 의미: 사용 중인 파일, 대기 중인 시그널, 커널 내부 데이터, 프로세서 상태, 메모리 주소 공간, 실행 중인 하나 이상의 스레드 정보 등
프로세스는 fork() 호출 시 생성되고, 기능을 수행한 뒤, exit()를 호출해 종료된다. 부모 프로세스는 wait() 호출로 자식 프로세스 종료 상태를 확인할 수 있다.
스레드는 프로세스 내부에서 동작하는 객체이고, 개별적인 PC, Stack, Register(context)를 가지고 있다.
리눅스 커널은 프로세스와 스레드를 구분하지 않는다.
리눅스 커널에 대한 접근은 오직 시스템 콜과 ISR로만 가능하다.
커널
top 명령어를 사용하면 시스템의 상태를 전반적으로 가장 빠르게 파악할 수 있다. (CPU, Memory, Process)
옵션 없이 입력하면 interval 간격(기본 3초)으로 화면을 갱신하며 정보를 보여준다.
Terminal window$ top -help procps-ng 3.3.17Usage: top -hv | -bcEeHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols]
Terminal windowtop - 21:22:27 up 232 days, 2:22, 3 users, load average: 0.00, 0.04, 0.05Tasks: 134 total, 1 running, 133 sleeping, 0 stopped, include &x3C;unistd.h>include &x3C;sys/mman.h>
ifdef _POSIX_MAPPED_FILESvoid * mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);int munmap(void *start, size_t length);
endifinclude ifdef _POSIX_MAPPED_FILESvoid * mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);int munmap(void *start, size_t length);endif">
mmap은 파일이나 장치를