본문 바로가기

분류 전체보기

(83)
프로세스, 스레드 차이 프로그램 ▶ 프로세스 ▶ 스레드 ​ ▶프로세스 : 메모리에 올라와 실행되고 있는 프로그램 각각의 객체 (작업의 단위) 실행 시 운영체제로부터 프로세서, 메모리 영역(Code, Data, Stack, Heap) , CPU 시간 등의 자원을 할당 받음 같은 프로세스 내의 자원들을 스레드끼리 공유하면서 실행 다른 프로세스의 자원에 접근하기 위해선 프로세스 간의 통신 필요 (EX. 파일) ​ ▶스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위 프로세스 내에서 stack 부분만 따로 할당 받음, code, data, heap 영역은 공유 (X 프로세스는 다른 프로세스의 메모리에 접근 X) 하나의 프로세스가 생성되면 하나의 (메인) 스레드가 생성됨 사용 이유) # 작업들 간의 통신 비용 절감 →프로세스 간..
세마포어, 뮤텍스 차이 공유된 자원에 여러 프로세스가 동시에 접근 → 문제 발생 → 데이터를 한번에 하나의 프로세스만 접근하게 하는 동기화 방식 ​ + 임계 구역 : 프로그램 코드 상에서 공유 자원에 접근하는 부분 대표적인 동기화 도구 : 뮤텍스 / 세마포어 ​ ▶세마포어 : 공유 자원에 여러 프로세스가 접근하는 것을 제한하는 방법 동기화 대상이 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..
Programming 대회 동상 (교내) 교내 Programming 대회 동상 수상했음! 1학기에 열심히 공부한 게 인증받는 기분이기도 하고 정말 뿌듯했다. 상금으로는 팀원들이랑 종강 이후에 만나 카페랑 고기집도 가고 볼링도 치며 알차게 사용했음 + 기록용으로 남기는 사진 .
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 : 가장 주소 메모리 접근이..