Computer(인강)/운영체제(41)
-
프로세스 구조와 스택 오버플로우
안녕하세요 bannavi입니다^ㅅ^ 오늘은 드디어 드디어 제가 기다리던 프로세스 구조와 스택 오버플로우 시간이에요. 바로 시작해볼게요^ㅅ^ 앞서 프로세스 구조에는 DATA가 있었죠. 이 DATA는 BSS와 DATA로 분리가 됩니다. BSS : 초기화되지 않는 전역변수 DATA 초기화 값이 있는 전역변수 앞으로 C프로그램을 보시면 코드가 프로세스 구조로 어떻게 들어갈지 이제 이해할 수 있습니다. 가볍게 듣기 스택 오버플로우 : 주로 해커들의 공격에 활용되었음(프로세스 구조를 알고있기 때문에..해킹이 가능)
2021.02.21 -
프로세스 구조와 힙
안녕하세요 bannavi입니다^ㅅ^ 지난 시간에 살펴보았던 내용은 정말 역대급이었어요.. 찬찬히 봐야하는데 봐야하는데 봐야하는데....... 유툽등 여러 자료를 좀 많이 살펴봐야될거같아요 ㅠㅠ 외계어 인지...? 하 오늘 공부 주제는 프로세스 구조와 힙 입니다!! 힙(heap) : 동적으로 생성되는 메모리 malloc() : 동적으로 메모리를 생성,할당 하는 함수 free() : 동적 메모리를 해제하는 함수 힙이라는 공간은 C언어에서는 동적 메모리를 생성하는 malloc() 함수를 통해서 만들어지는 공간이다. 힙이라는 공간이 왜 필요한가? 1. 데이터(data)는 전혀 변하지 않는 공간이 될 수 있는데, malloc()이라는것은 결과적으로 실행코드 안에서 몇번 어떻게 실행이 될지 모르는 것이기 때문에....
2021.02.21 -
프로세스 구조와 컴퓨터 구조
안녕하세요 bannavi입니다^ㅅ^ 오늘은~~ 프로세스 구조와 컴퓨터 구조에 대해서 살펴볼거에요 바로 시작해볼게요! 고고~ 프로세스(process)는 일반적으로 어떻게 구성되어 있을까? 1. text(CODE) : 코드 2. data : 변수/초기화된 데이터 3. stack : 임시 데이터(함수 호출, 로컬 변수 등) 4. heap : 코드에서 동적으로 만들어지는 데이터 참고. 스택(stack)은 자료구조 였지만, 이러한 스택을 이용해서 함수를 실행할 수 있는 구조를 만드는것을 스텍프레임(stack frame)이라고 합니다. PC(Program Counter) + SP(Stack Pointer) 09:43 참고 참고.EBP는 어떤 부분이 문제였는지를 빠르게 tracking하기 위해서 제공한다.
2021.02.21 -
프로세스 구조
안녕하세요 bannavi입니다^ㅅ^ 정신없이 빠르게 포스팅을 진행하고 있네요 하하.. 저는 100프로 이해하고 넘어가기 보다 흐름을 80프로 정도 익히고 다시 한번 읽어보면서 나중에 공부할때 해당 내용을 조금씩 추가해서 포스팅할 예정이랍니다. 괜찮아요! 지금 저는 '익숙해지는것'이 목적이랍니다. 오늘 공부는 프로세스와 컨텍스트 스위칭에 대해서 살펴 볼거에요. 바로 시작해보겠습니다^ㅅ^ 프로세스와 컨텍스트 스위칭 컨텍스트 스위칭이 뭐지? A라는 프로세스가 CPU에서 실행을 하다가, 어느순간 scheduler가 B라는 프로세스로 실행하는 프로세스로 바꿔줄때! 바로 이때! 바꿔주는 매커니즘을 컨텍스트 스위칭 이라고 합니다. 컨텍스트 스위칭에 대해서 깊이 알려면 프로세스 구조에 대해서 먼저 공부해야합니다. 디버..
2021.02.21 -
인터럽트 내부 동작
안녕하세요 bannavi에요^ㅅ^ 오늘은 인터럽트 내부 동작에 대해서 살펴볼거에요 먼저 시스템 콜 실행에 대해서 먼저 살펴볼게요! 두-둥 뭐야뭐야 시스템콜도 인터럽트였어??^ㅅ^?? 시스템콜도 내부적으로는 인터럽트 방식으로 처리를 한답니다. 시스템 콜 실행을 위해서는 강제로 인터럽트 명령을 넣어, CPU에게 실행시켜야 합니다. 시스템콜 실제 코드 1. eax 레지스터에 시스템 콜 번호를 넣고, 2. ebx 레지스터에는 시스템 콜에 해당하는 인자값을 넣고, 3. 소프트웨어 인터럽트 명령을 호출하면서 0x80값을 넘겨줌 인터럽트와 시스템 콜(고급) 시스템콜 인터럽트 명령을 호출하면서 0x80값을 넘겨줌 1. CPU는 사용자 모드를 커널 모드로 바꿔줌 2. IDT(Interrupt Descriptor Tabl..
2021.02.21 -
인터럽트 종류
안녕하세요 bannavi입니다.^ㅅ^ 하//// 열심히 썼는데 포스팅이 날아가 버렸네요 ^ㅅ^ 문서 작성중엔 캐시삭제를 하면 안된다는 교훈을 얻으면서...... 시작해보겠습니다. 오늘은 인터럽트의 종류를 살펴볼거에요 그래도 선점형 비선점형 공부할때보단 한결 마음이 가볍네요 (저만 그런거 아니죠...?) 인터럽트 처리 예 인터럽트는 일종의 이벤트로 불립니다. 이 이벤트에 맞게 운영체제가 처리해주어야하고요 주요 인터럽트(Interrupt) 1. 계산하는 코드에서 0으로 나누는 코드 실행시(Divide-by-Zero Interrupt) 2. 타이머 인터럽트 선점형 스케쥴러를 위해 필요 3. 입출력(IO) 인터럽트(여러가지 디바이스..) 인터럽트 종류는 두가지로 나뉩니다 내부 인터럽트와 외부 인터럽트입니다. 내..
2021.02.21