본문 바로가기

SYSTEM

(19)
세마포어, 뮤텍스 차이 공유된 자원에 여러 프로세스가 동시에 접근 → 문제 발생 → 데이터를 한번에 하나의 프로세스만 접근하게 하는 동기화 방식 ​ + 임계 구역 : 프로그램 코드 상에서 공유 자원에 접근하는 부분 대표적인 동기화 도구 : 뮤텍스 / 세마포어 ​ ▶세마포어 : 공유 자원에 여러 프로세스가 접근하는 것을 제한하는 방법 동기화 대상이 1개 이상일 때 사용 현재 공유 자원의 상태를 나타내는 하나의 값을 두어 상호배제를 달성하는 기법 ▷ 정수 값은 접근할 수 있는 최대 허용치만큼 동시에 사용자 접근을 할 수 있게함 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제 할 수 있음 + 상호배제 : 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위한 알고리즘 ​ ▶뮤텍스 : 동시 프로그래밍에서 공유..
하드웨어, 소프트웨어 BP #1 하드웨어 , 소프트웨어 브레이크포인트 차이 브레이크 포인트 : 디버깅을 목적으로 실행중인 프로세스를 의도적으로 멈추게 하는 장소 ​ ▶소프트웨어 브레이크 포인트 : 디버깅 진행시 흔하게 사용되는 브레이크 포인트 / 한 바이트의 명령으로 프로세스 실행을 중지시킴 Opcode : 명령코드, 명령어에서 실제로 어떤 동작을 하는지 나타내는 부분 CC : INT3 라는 CPU의 256개의 트랩 중 하나를 발생시키는 명령어 INT : CPU가 예외처리를 하기 위해 인터럽트(예기치 않은 일이 발생해도 중단 X, 계속 업무 처리할 수 있게 하는 기능)를 발생시키는 것 브레이크 포인트 설정 ▷ 해당 명령의 Opcode를 브레이크 포인트 리스트에 저장 ▷ 해당 Opcode를 cc로 변경해서 인터럽트 발생시킴 ▷ cc..
멀티바이트, 유니코드 ▶멀티바이트 : 하나 이상의 바이트로 표현되는 방식 EX. 영어 1byte, 한글 2byte 멀티바이트 문자 집합은 특정 문자 집합마다 코드 페이지가 존재함 (+ 코드 페이지 : 특정 문자 세트에서 사용 가능한 각 문자를 설명하는 키) → 각 나라 언어 페이지로 해석하면 서로 다른 언어가 나와 문자가 깨질 수도 있음 → 유니코드는 아스키 문자 등 모든 문자들을 한 문자당 2 byte 로 할당함 ▶유니코드 : 항상 2바이트 크기로 문자를 표현하는 방식 각 특정 문자는 고유의 유니코드 값을 지님 멀티바이트 유니코드 char TECHAR strcat_s() _tcscat_s() strcpy_s() _tcscpy_s(), _tcsncpy_s() strlen() _tcslen() sprint_s() _stprin..
PE ▶PE (Portable Excutable) : Windows 3.1 윈도우 상에서 지원되는 실행파일의 구조 ​ 실행 계열, 라이브러리 계열, 드라이버 계열, 오브젝트 파일 계열 PE 파일 = 헤더 + 바디 헤더: 파일이 실행되기 위해 필요한 정보 저장 바디: 명령어(코드), 데이터, 리소스 등이 저장 섹션의 헤더 : 각 섹션의 파일/메모리에서의 크기, 위치, 속성 등이 정의됨 PE 헤더의 끝부분, 각 섹션의 끝 : Null padding 영역 존재 (파일, 메모리 등을 처리할 때 효율을 높이기 위한 기본 단위 개념으로 사용) 1. ‘text’ 섹션 (Code : 실행, 읽기 권한) 파일을 열었을 때 실행될 코드를 저장함 2. ‘data’ (Data: 비실행, 읽기, 쓰기 권한) 초기화된 전역 변수, s..
VA, RVA, RAW VA : 프로세스 가상 메모리의 절대주소 VA = RVA + ImageBase (+ ImageBase : 가상 메모리 상에서 PE 파일이 로드되는 시작 주소) 가상의 메모리이기에 파일의 시작 주소를 알아야 파일에 접근할 수 있음 → 실제 주소와 가상 주소를 연결해주는 것이 매핑 / 매핑 되는 위치가 ImageBase RVA : Image Base로부터의 상대 주소 RVA = RAW + VA – PointToRawData = VA – ImageBase (+ PointToRawData : 섹션의 첫번째 페이지를 가리키는 파일 포인터) ImageBase는 메모리에서 PE파일이 어디에 로딩 되는지 메모리에 로딩되는 시작 주소를 알려줌 RAW : 디스크 상의 파일에서의 주소(오프셋) RAW = RVA – VA +..
가상 메모리와 물리 메모리 ▶가상 메모리 방식 : 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식 실제로 프로그램 수행에 필요한 부분만 메모리에 올려놓음 → 주기억장치의 용량보다 큰 프로그램 파일도 사용자가 메모리에 올려놓을 수 있음 (주기억장치의 크기보다 더 큰 공간 사용 가능) 메모리 관리 기능을 통해 물리 주소로 변환되어 실제 물리 메모리에 매핑됨 프로세스간 공간 불리로 프로세스 이슈가 전체 시스템에 영향 X + 메모리 매핑이란? 파일, 코드 또는 개체를 시스템 메모리로 가져오도록 요청하는 컴퓨터 프로그래밍의 프로세스 또는 명령 가상 메모리 시스템을 사용하기 위해선 가상 주소 / 물리 주소가 필요 가상 주소 : 프로세스가 참조하는 주소 물리 주소 : 실제 메모리 주소 MMU : 가장 주소 메모리 접근이..
커널영역, 유저영역 차이 #1 커널영역과 유저영역 차이 일반 프로그램을 실행시키기 위해 필요한 메모리 공간과 운영체제의 실행을 위한 메모리 공간을 분리 X 하면 관리하기 힘들어짐 → 유저 영역과 커널 영역을 분리하는 이유 ▶유저 영역 : 프로그램이 동작하기 위해 사용되는 메모리 공간 → 스택 영역, 힙 영역, 데이터 영역, 코드 영역으로 나뉨 ​ 사용자 모드 : 사용자 영역의 응용 프로그램이 사용하는 모드 사용자 영역의 응용프로그램이 커널 영역의 기능을 사용하기 위해서는 시스템 콜이 필요함 유저 어플리케이션은 사용자 모드에서만 실행 o + 시스템 콜이란? : 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게함 Ex) 쉘에서 cat이라는 명령어를 입력, cat을 살펴보면 안에는 파일을 open하거나 read 해주는..
함수 프롤로그, 에필로그 1. 함수 프롤로그 ​ 프롤로그 = 스택 프레임 생성 = 함수 실행 준비 과정 1) push ebp : 함수가 종료된 후 ebp를 이전 함수의 ebp로 재설정하기 위해 스택에 이전 함수의 ebp를 push함 2) mov ebp, esp : 호출된 함수의 시작을 알리기 위해 현재 esp 값을 ebp에 복사함. → 프롤로그를 통해 스택프레임을 형성하고 형성된 스택프레임을 통해 함수를 구분지을 수 있게함. Esp가 가리키는 곳을 ebp도 가리키게 됨. ​ 2. 함수 에필로그 에필로그 = 함수의 기능을 수행하고 난 후, 호출한 곳으로 돌아오기 위해 스택을 복원하는 과정 ​ 1) leave : 함수를 종료하고, ebp를 이전함수의 ebp로 재설정해주는 과정 (프롤로그와 반대로 진행) 1- mov esp, ebp ..