일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ioctl
- NAPT
- 어셈블리어
- level trigger
- LOB
- doupdate
- wnourefresh
- .nret core 배포
- mvwin
- wrefresh
- epoll_wait
- .net core 7
- vtable
- C언어
- 취약점
- Docker
- Compiler
- architecture
- cbpf
- epoll
- ncurses
- 풀이
- REDIS
- edge trigger
- iptables
- BOF
- packet flow
- DOCKER-USER
- packet filter
- rfc5508
- Today
- Total
목록OS (5)
Tuuna Computer Science
만약 멀티코어 환경에서 코어마다 스레드를 만들어서 실행한다는 가정과 첫 번째 스레드가 특정 메모리에 값을 설정하고 두 번째 스레드가 특정 메모리의 값을 가져온다고 했을 때 동일한 스레드였다면 L1캐시에서 값을 가져왔을 것이다. 하지만 이는 다른 스레드이기 때문에 L1캐시 접근하지 않고 L2캐시에 값이 있기를 믿어야한다. 없다면 L3, mem까지 접근해야해서 굉장히 느려진다. 결론은 동일한 데이터에 대한 접근은 동일한 코어에 해당하는 스레드가 담당하는 것이 성능적인 이슈면에서 좋은 효과를 발휘한다. 캐시에 대한 성능 체크 도구로는 oprofile, cachegrind 도구가 존재한다.
[ 메모리 1MB 어떻게 접근하죠?] 8086에서는 1MB까지의 메모리를 사용가능한데 메모리지정 방식은 0x0000:0000 ~ 0xFFFF:FFFF 이다. 즉, 0xFFFF:FFFF를 물리주소형식으로 변환하면 0x10FFEF다. 이는 1MB를 초과한다. 그럼 이 초과되는 것은 어디에 기록되는 걸까 이 초과되는 것은 메모리의 0x0000:0000에서 부터 다시 기록된다. 즉, 이전의 데이터가 겹쳐진다는 것이다! 그래서 펜티엄4의 어드레스 라인이 32개 있는데 그중 어드레스 라인 20번, A20번을 키보드 컨트롤러와 AND연산을 진행한다. 그래서 키보드 컨트롤러의 특정 핀을 1로 세트해야만 A20번이 1로 세트되었을 때 그 값이 1로 RAM에게 전달 될 수 있다. 이 A20와 키보드 컨트롤러를 킴으로써 1..
메모리의 주소를 표현하기 위해 우리는 3가지의 단어를 사용한다. 논리주소, 선형주소(가상주소), 물리주소 이들 중에서 실제로 CPU가 인식할 수 있는 주소는 "물리주소"이다. 그럼 이 3가지의 주소가 무슨 의미인지 살펴보자. 논리주소 :: 프로그래머의 관점에서 본 주소. 주로 오프셋의 의미가 강하다. 선형주소 :: 논리주소를 GDT와 LDT를 통해 나온 주소를 의미한다. 물리주소 :: 선형주소를 페이징을 통해 나온 주소를 의미한다. 자 기본적으로 (논리주소 => 선형주소 => 물리주소) 변환하게 된다. 이 어셈코드를 보자 lea esi, [msgPMode] "ESI레지스터에 msgPMode의 주소를 복사해라"는 의미를 지닌다. 그럼 ESI레지스터에는 msgPMode의 주소가 복사되는데 이 내용을 기계어의..
IDT와 GDT가 헷갈렸던 참에 정리가 잘 돼서 여기에 마지막으로 정리를 하려한다. 일단 인터럽트의 종류에는 소프트웨어 인터럽트랑, 하드웨어 인터럽트가 존재한다. 소프트웨어 인터럽트는 말 그대로 소프트웨어단에서 CPU에게 인터럽트를 요청하는 거고 하드웨어 인터럽트는 CPU외의 주변 기기 장치로 부터 받는 인터럽트를 의미한다. 오늘은 소프트웨어보단 하드웨어 인터럽트에대해 정리할것이다. 일단 우리의 PC에는 8259A라는 인터럽트를 받는 PIC칩이 존재한다. 이 PIC는 2개로 이루어져 있다. 마스터 PIC + 슬레이브 PIC로 이루어져 있다. 도 이 각 각의 PIC에는 8개의 IRQ와 한 개의 INT핀 한 개의 /INTA핀이 존재한다. (각 각의 IRQ핀은 번호가 매겨지는데 0번 째 부터 시작한다.) 마스..
OS 제작과정 중에 Real Mode에서 Protected Mode로 변환할 때 가장 중요한 것은 32비트 Kernel을 개발하는 것이다. 즉, 이는 CPU가 Protected Mode로 동작하도록 해야하는 것이다. 이 Real Mode와 Protected Mode로 변환하기 전엔 GDT(Global Descriptor Table)이라는 것이 필요로 한다. GDT는 각 세그먼트 영역에 대해 이것들을 어떻게 사용할 것인지에 대해 서술한 것을 의미한다. (여담이지만 최신 윈도우와 리눅스는 LDT라고 Local Descriptor Table을 사용하는데 나중에 한 번 공부해봐야겠다.) ---------------------------------------------Base Address : 세그먼트의 시작 주..