일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++11
- vim
- ftz
- Network
- libtins
- BEST of the BEST
- #Qt Creator
- libpcap
- Overwatch League SaberMetrics
- #MINT64 #Sqix
- 인터럽트
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- linux
- vi 외부 명령어
- Sqix
- Find
- #
- #Best of the Best #OS #MINT64 #Sqix
- #IntelManual
- 오버워치
- >
- KASAN
- vi
- FTZ 레벨2
- command
- 오버워치 세이버메트릭스
- Today
- Total
목록CS/OS (8)
Sqix
INODE 파일 시스템 리눅스의 inode 파일 시스템은 다음과 같은 구조를 가진다 수퍼 블록 : 파일 시스템의 정보와 파티션의 정보를 가지고 있다 INODE 블록 : 파일의 상세 정보 데이터 블록 : 실제 데이터가 저장된 블록 파일은 inode 고유값과 자료구조에 의해 주요한 정보가 관리된다. 각 파일은 파일명:inode 형태로 inode 번호와 매칭된다. 파일시스템에서는 이 inode를 기반으로 파일에 액세스하고, inode를 기반으로 메타 데이터를 저장한다. inode 기반 메타데이터는 위 그림과 같이 권한, 소유자, 크기, 생성 시간 등을 가지고 있다. 여기서 Direct Block는 각각의 4kb 데이터 블록을 가리키고, single / double / triple indirect는 각각 4kb..
리눅스를 기준으로 보면 프로세스 하나당 메모리는 4GB를 사용한다. 반면 우리 메모리는 16GB? 32GB? 이정도에 불과하다. 현재 우리가 통상 사용하는 컴퓨터는 폰 노이만 구조이므로 프로세스는 메모리를 할당받아 그 위에서 동작해야 하지만, 모든 프로세스를 전부 실제 메모리에 올리려면 비용이 너무 많이 소요된다. 그래서 우리는 가상 메모리를 사용한다. 가상 메모리 실제 메모리보다 많은 양의 메모리를 사용하는 것 처럼 보이는 기술. 실제로 순간 우리가 사용하는 메모리의 크기는 작다는 점에 착안하여 고안된 기술로, 프로세스 간 공간이 분리되어 특정 프로세스의 이슈가 발생하더라도 시스템 전체에 영향을 주지는 않는다. Concept 프로세스는 가상 주소를 사용하며 실제 해당 주소에서 데이터를 읽고 쓸 때만 물..
쓰레드(Thread) 프로세스는 실행 중인 프로그램으로, 운영체제로부터 자원을 할당받는 작업의 단위로서 디스크로부터 메모리에 올라가 CPU 자원을 할당받는 것을 말한다. 쓰레드는 프로세스의 실행 단위로, 하나의 프로세스 내에서 여러 개의 실행 흐름을 가진 쓰레드가 존재하며 프로세스의 자원이나 데이터(주소 공간)를 공유받는다. 각각의 쓰레드는 독립된 작업 수행을 위해 스택을 별도로 가지고 있는데, 이는 각각의 쓰레드가 독립적인 작업 수행을 하기 위해 독립적인 함수 호출이 필요하고, 이를 위해서는 독립적으로 사용할 수 있는 스택이 필요하기 때문이다. 또한 쓰레드는 마찬가지로 프로그램 카운터 레지스터를 독립적으로 가지고 있는데, 스케줄러에 의해서 CPU 할당을 받고 이후 특정 조건에 의해 선점당하게 되면 추후..
Inter-Process Communication 프로세스간의 접근권한이 낮은 경우, 예를 들어 A 프로세스에서 B 프로세스의 데이터 / 코드를 바꿀 수 있다면 이는 보안 상 매우 위험하므로, 이러한 커뮤니케이션 방식은 제공되지 않는다. 다만, 프로세스 간 커뮤니케이션이 필요한 경우 제공되는 기법이 IPC이다. 프로세스 간 통신은 성능을 높이기 위해 동시에 여러 프로세스를 만들어 실행하는 경우 프로세스 상태 확인, 결과를 통해 만들어진 데이터 송수신을 위해 필요할 수 있다. 동시 작업을 위해 하나의 프로세스를 여러 개의 프로세스로 쪼개서 사용하는 fork의 경우 sys_fork()를 통해 프로세스 자신을 복사하여 자식 프로세스 생성 동시 작업을 위해 여러 프로세스를 fork하여 동시 수행 과 같은 병렬 ..
프로세스 프로세스 구조 정적 공간 (READ ONLY) CODE : 컴파일된 코드가 저장되어 있는 공간 DATA : 초기화 된 global / static 변수 등이 저장되는 공간 BSS : 초기화 되지 않은 global / static 변수 등이 저장되는 공간 동적 공간 STACK : 함수 내에서 사용되는 지역변수, 파라미터, RET 주소 등이 저장되는 공간 HEAP : 동적 메모리 할당 함수들에 의해 할당 / 반환되는 공간 스택의 동작 예시 - 스택 프레임 int main() { puts("I will malloc() and strcpy the flag there. take it."); buffer = (char *)malloc(100); str = "UPX...? sounds like a deliv..
인터럽트 인터럽트란? 소프트웨어나 하드웨어로 인해 발생하는, CPU의 처리가 필요한 이벤트를 CPU에 알려서 처리하도록 하는 기술 일종의 이벤트로, 발생하는 이벤트에 맞게 운영체제에서 처리 인터럽트를 실행하기 위한 opcode는 int 인터럽트는 컴퓨터 부팅 시 미리 정의되어 이벤트와 실행코드 주소가 IDT에 기록되어 있음. 인터럽트는 CPU에 직접 전달되지 않는다. PIC(Programmable Interrupt Controller)에 의해서 인터럽트 요청을 순차적으로 처리 최근에는 Advanced PIC를 활용하여 Local / I/O APIC로 나누어 활용 Local APIC : Timer, 열 센서, 기기 직접 연결 I/O 장치에서 발생된 Interrupt 핸들링 I/O APIC : CPU 코어들..
배치 처리 시스템 하나의 프로그램 실행 요청의 처리가 완료된 이후 다음 프로그램이 순차적으로 진행될 수 있도록 하는 처리 기법 Queue와 유사한 형태로, First in - First out 형태(등록된 프로그램 순서대로 처리) 모든 처리작업이 종료되어야 결과가 도출되므로, 각 사용자 입장에서는 응답시간이 길다. 시분할 시스템 프로그램 실행의 동시성과 이용자의 다중성을 확보하기 위해 응답 시간을 최소화하는 시스템 응용 프로그램이 CPU를 점유하는 시간을 잘개 쪼개어 사용하도록 하는 시스템 멀티 태스킹 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것 처럼 보이도록 하는 시스템 다중 프로그램이 매우 짧은 기간동안 실행되도록 하여 동시에 실행되는 것처럼 보이게 함. 시분할 시스템과 기본 원리가 동일..
운영체제(Operating System, OS)의 역할 : 시스템의 자원*을 관리하는 관리자 *시스템 자원 = 컴퓨터의 하드웨어( CPU / Memory / I/O / Disk 등) 운영체제의 역할 시스템 자원의 분배 각 프로세스마다 CPU를 얼마나 사용하도록 할 지에 대한 분배 프로그램이 Memory의 어떤 주소에 어느 정도의 공간을 활용해서 저장할지에 대한 분배 프로그램을 어디에 저장할지에 대한 결정 I/O 장치의 입력에 대한 처리와 입력된 신호에 대한 출력 처리 결정 컴퓨터 하드웨어와 응용프로그램 제어 응용프로그램의 실행과 동작에 대한 관리 프로세스 / 메모리 / 파일 / 디스크 / 입출력에 대한 관리 네트워킹 제어와 컴퓨터 보호(보안) 컴퓨터 하드웨어의 동작에 대한 제어 사용자와 컴퓨터 간의 의사..