일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 연결리스트
- 브라우저
- 이진탐색
- 타입스크립트
- 웹팩
- cors
- 프론트엔드
- 컨테이너
- 자료구조
- 큐
- GraphQL
- 포인터
- 코딩테스트
- 프로그래머스
- APOLLO
- 릿코드
- 자바스크립트
- C
- alexnet
- RT scheduling
- pytorch
- 스택
- 해시테이블
- 연결 리스트
- 알고리즘
- RxJS
- Machine Learning
- 프로세스
- vue3
- 배열
- Today
- Total
목록운영체제, 컴퓨터 구조 (19)
프린세스 다이어리
1. Atomic Operation이란 원자적 연산(atomic operation)이란 동시성 제어와 데이터 무결성을 보장하기 위해, 다른 프로세스 또는 스레드가 해당 데이터를 변경할 수 없는 상태로 보호하는 연산이다. 여러 CPU가 메모리 등 공유자원에 접근할 때, 여러 프로세스 또는 스레드가 동시에 액세스하지 않도록 하기 위해 다른 프로세스 또는 스레드가 해당 데이터를 변경할 수 없는 상태로 만들어준다. 원자적 연산에는 여러 가지가 있다. # atomic i = None a.extend([x, y, z]) x = a.pop() v = dict[k] # not atomic i = i + 1 if not dict.has_key(k) : dict[k] = 0 (1) Compare-and-Swap (CAS)..
on-chip memory는 일반적으로 레지스터, 캐시 메모리, 스크래치 패드 등 다양한 형태로 구현됨. 레지스터, 캐시 메모리, 스크래치패드 이 세 가지 메모리는 모두 프로세서 내부에 위치하여 메모리 접근 속도가 매우 빠르고, 전력 소모도 적으나 다음과 같은 차이점이 있음 특징 용도 레지스터 CPU 내부에 위치한 메모리 CPU 연산에 사용되는 값 저장 캐시 메모리 CPU 내부에 위치한 메모리, 메인 메모리의 일부를 저장하는 작은 용량의 메모리 CPU나 GPU에서 데이터를 빠르게 처리하기 위해 사용됨, 데이터의 지역성을 이용하여 데이터를 캐싱함 스크래치 패드 프로세서 내부에 위치한 소규모 메모리 메모리 대역폭을 줄이고, 실행 속도를 높이기 위해 사용됨 레지스터: CPU 내부에 위치한 메모리로 용량이 매우..
리눅스 시스템에서는 inode 방식을 사용하는 ext 파일 시스템을 주로 사용한다. inode 블록에는 파일의 권한, 소유자, 사이즈, 생성시간 등의 메타데이터를 담고 있다. 1. inode 블록에 담긴 정보들 1-1. 파일 내용 출력해보기 $ cat data.rtf desktop 디렉터리에 텍스트 편집기로 급조한 파일을 저장해 놓고, cat 명령어로 data.rtf의 내용을 화면에 출력해 보았다. cat 명령어를 사용하여 파일에 접근하면, 먼저 그 파일에 해당하는 inode 번호를 찾는다. inode 번호를 찾아 inode 블록에 접근하고, 그 내용에 접근하고, 그리고 데이터를 읽어서 화면에 출력해 준다. 1-2. 파일 메타데이터 출력해보기 $ ls -al data.rtf 이제 desktop 디렉터리의..
inode란 Linux/Unix의 파일 시스템에서 사용되는 자료구조를 말한다. inode 방식에는 크게 3가지 블록 타입이 있는데, 슈퍼 블록(super block), 아이노드 블록(inode block), 데이터 블록(data block)으로 나뉜다. 1. 슈퍼 블록 슈퍼 블록은 파일 시스템 전체를 대표하는 블록으로, 파일 시스템 정보 및 파티션 정보 등을 포함하고 있다. 리눅스 터미널에서 df 명령어를 치면 슈퍼블록 정보를 볼 수 있다. 파일 시스템이 뭐가 있는지, 512Byte짜리 블록이 몇 개인지, 사용되고 있는 용량과 남아있는 용량은 얼마인지, 각각의 파일 시스템은 어디에 마운티드 되어 있는지 등의 정보를 보여준다. 2. inode 블록 inode 블록은 inode가 모여 있는 공간이다. 모든 ..
1. 파일 시스템의 개념 파일 시스템이란 운영체제가 저장매체에 파일을 읽거나 쓰기 위한 자료구조 또는 알고리즘이다. 컴퓨터를 꺼도 데이터를 유지하기록 데이터의 크기나 위치 등을 약속하여 운영체제에서 읽도록 개발된 시스템이다. 초창기에는 데이터를 비트 단위로 주소를 매겨서 읽고 썼는데 이는 오버헤드가 크다는 단점이 있어, 블록 단위로 관리하기 시작하였다. 4KB 단위로 데이터를 관리하기 시작하면서 주소의 수가 줄어들었고, 블록마다 고유번호를 부여하면 읽고 쓸 수 있게 되었다. 그런데 이것 또한 초반에나 가능했지, 점차 데이터와 저장매체의 규모가 늘어나자마자 바로 일반 사용자가 관리하긴 힘들어지는 문제가 생기게 됐다. 일반 사용자가 파일을 관리하기 용이하도록, 파일을 추상적(논리적) 객체로 관리하기 시작했다..
#include #include #include #include int main() { int fd; fd = open("data.txt", O_RDONLY); if(fd == -1) { printf("Error: cannot open file\n"); /* 파일을 열지 못했으므로 종료 */ return 1; } else { printf("File opened and now close_\n"); close(fd); return(); } } 위와 같은 C언어 코드가 있다. 파일을 읽는 간단한 프로그램이다. 이 파일이 컴파일되면 실행파일의 사이즈는 1KB 남짓 될 것이다. 운영체제에서 실행을 하기 위해서는 반드시 프로세스가 만들어져야 한다. 이 프로세스가 차지하는 가상 메모리 영역은 1KB도 2KB도 아니고..
1. 세그멘테이션 기법과 페이징 시스템의 차이 세그멘테이션 기법은 서로 크기가 다른 논리적 단위인 세그멘트로 가상 메모리를 관리하는 기법으로, 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용한다. 물리 메모리가 세그멘트 단위의 연속된 크기의 메모리를 제공해주지 못하는 문제가 발생할 수 있고 이 경우에는 페이징 시스템에서처럼 그왑 영역을 사용한다. 이에 반해 페이징 시스템은 특별한 의미 없는 4KB의 페이지 단위로 메모리 주소에 접근하는 방식이다. 페이지 블록 4KB만큼 잘라서 메모리를 사용할 수 있지만, 4KB 단위만큼 데이터가 딱 맞아떨어지지 않는 경우에는 불필요한 메모리 공간을 낭비하게 되는 문제점이 있다. 2. 세그멘테이션 기법의 가상주소 변환 세그멘테이션 기법에서의 페이지 테이블은 페..
1. 페이지 교체 알고리즘 종류 메모리가 다 찬 상태에서, 메모리에 올라간 상태의 페이지들 중 어떤 것을 내리고 새 페이지로 교체할지 최선책을 내려야 한다. 최소한의 횟수로 페이지 폴트 인터럽트가 발생해야 CPU가 여러 프로그램을 동시에 실행할 때 처리 지연이 적다. 이를 판단하는 대표적인 알고리즘에는 5가지 정도가 있다. 1-1. FIFO - 단순하게 가장 먼저 들어온 페이지를 내리고 새 페이지로 교체하는 알고리즘이다. - 만약 page 1 -> page 3-> page 4 -> page 5 순으로 페이지가 올라가서 꽉 찬 상태라면, 새로 참조해야 하는 페이지인 page 2는 page 1과 교체가 된다. 1-2. OPT(OPTimal Replacement Algorithm) - 가장 이상적으로 페이지 ..