참고 : http://forensic-proof.com/archives/181 CMOSCMOS는 Complementary Metal-Oxide Semiconductor의 약자로 한글로 해석 하면 상보성 금속산화막 반도체 라고 해석된다.간단하게 씨모스라고 읽는다.CMOS는 광다이오드를 이용하여 집접회로를 만들기 위한 기술로 CPU,Microcontroller,SRAM과 같은 디지털 논리 회로에 사용된다.메인보드에 보면 RTC/NVRAM이라는 칩이 있는데 RTC(Real-Time Clock)은 시스템의 날짜와 시간을 저장하고 NVRAM(Non-Voltaile RAM)은 비 휘발성 메모리로써 드라이브에 대한 정보, 부팅 순서 등이 들어 있다. 이 RTC/NVRAM이 CMOS기술로 된 칩이고 이 칩이 메인보드 ..
(참고 : http://forensic-proof.com/archives/355) CHS 주소 지정 방식CHS는 Cylinder-Head-Sector의 약자이며 실린더,헤드,섹터로 이루어져있는 하드디스크의 물리적 구조를 기반으로 탐색하는 주소 지정 방식이다.(출처 : http://www.datarecoverytools.co.uk/2009/12/22/chs-lba-addressing-and-their-conversion-algorithms/)여기서 플래터가 3 장이고 헤드가 6개 이므로 각각의 플래터는 양면다 사용이 가능함이 알 수 있다.파일의 입출력이 명령이 떨어지고 파일의 위치가 CHS(10,5,1)이라고 한다면 5번째의 헤드를 10번째 실린더의 1번째 섹터에 위치시키고 데이터르 읽기 시작한다.이렇듯 ..
MBR은 Master Boot Record의 약자이며 파티션된 기억 장치의 첫 섹터인 512바이트의 저장 공간이다.MBR의 구조는 주소(10진수) 크기(Byte) 역할 설명 0 440 부트 코드 부팅을 하기 위한 정보가 들어 갑니다. 440 4 디스크 서명 디스크의 고유한 일련 번호가 들어갑니다 444 2 NULL 446 64 프라이머리 파티션 테이블 각각 16바이트 씩 개의 주 파티션 영역에 대한 정보가 삽입됩니다. 510 2 MBR 시그니쳐 0x55AA 이게 없으면 부트로더로 인식하지 못합니다. 전체 크기 : 446 + 64 + 2 = 512첫 부분인 부트 코드 부분은 부트 로더에 관한 정보가 들어 갑니다 자세한 정보는 밑 부분에서 설명 하겠습니다.440주소 부터 4바이트의 크기에는 해당 디스크의 고..
(대부분)인용 http://forensic-proof.com/archives/178 1. 사용자가 처음 전원 버튼을 클릭하면 파워 서플라이가 외부로 부터 들어온 전압을 검사하여 현재 시스템에서 사용 할 수 있는 전압으로 변환한다. 변한된 전기적 흐름은 CPU로 전달되어 CPU가 지니고 있는 이전의 값을 지우고 PC(Program Counter)를 초기화 시킨다.2. 부트 프로그램은 먼저 CPU의 이상 유무를 테스트한 후 POST(Power On Self-Test)작업을 수행 하기 위한 기본적인 테스트를 수행하며 만약 테스트의 결과가 CMOS에 저장된 값과 일치한다면 POST작업을 수행한다.3. POST작업의 첫 단계로 CPU는 System Bus가 정상적으로 동작하는지 확인 하기 위해 System Bus..
이번 포스팅은 FAT와 NTFS에 대해 설명하도록 하겠습니다. FAT는 File Allocation Table의 약자이며 해석하면 파일 할당 테이블 이라고 할 수 있습니다.FAT 파일 시스템은 1977년 빌 게이츠와 마크 맥도널드가 개발하였으며, 윈도우즈 Me 까지 주로 사용되었습니다.그리고 FAT 시스템은 지금까지도 많은 메모리 카드와 많은 컴퓨터 기기에서 널리 사용되고 있습니다.FAT의 버전은 여러개가 있지만 유명한 버전인 FAT12,FAT16,FAT32,exFAT만 소개 하겠습니다. FAT12 : MS-DOS 초기에 사용이 되었으며 플로피 디스크에는 여전히 사용됩니다. 그러나 요즘은 거의 사용되지 않겟지요.FAT16 : 32메가바이트 이상의 하드디스크 드라이브를 지원하기 위해 만들어졌으며 윈도우즈 ..
이 포스팅은 공부 정리 용도로 작성된 포스팅이므로 다른 블로그,사이트에서 인용한 글이 많습니다. 인터럽트란. CPU가 프로그램을 실행 하고 있을 때, 입출력 장치나 예외 상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 그 상황을 처리 할 수 있도록 하는 것을 말한다.다른 방식으로는 폴링이 존재하는데 폴링은 대상을 확인하여서 상황이 발생하면 해당 처리 루틴을 실행하는 형식이다. 따라서 폴링이 수행되는 동안은 다른 장치 관리가 힘드므로 CPU의 자원이 낭비가 된다.CPU는 인터럽트를 감지하면 현재 실행중인 기계어 코드를 중단하고 해당 인터럽트 처리 프로그램으로 점프하여 해당일을 처리하며 인터럽트 처리를 위한 루틴을 인터럽트 서비스 루틴(ISR,Interrupt Service Routine)이라고 한다...
이 포스팅은 공부한걸 정리한걸 목적으로 쓰여진 포스팅으로 위키 백과를 기준으로 작성 되었습니다. POSIX는 이식 가능한 운영 체제 인터페이스(Portable Operating System Interface)의 약자로 UNIX계열의 OS에서 공통 API를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발 하기 위해 IEEE에서 후원,책정한 애플리케이션 인퍼페이스 규격이다.POSIX의 내용은 커널로서의 C 인터페이스 시스템 콜, 프로세스 환경, 파일&디렉토리,시스템 데이터 베이스, tar 압축 포맷등 다양한 분야를 이루고 있다.
이 포스팅은 공부한 걸 정리하는 목적으로 쓴 글로 위키 백과를 참고하여 작성 하였습니다. IPC는 Inter-Process Communication의 약자로써 프로세스간 통신 이라는 뜻을 가지고 있습니다.IPC는 프로세스들 사이에서 서로 데이터를 주고 받는 행위, 또는 그에 대한 방법이나 경로를 뜻합니다. IPC의 방식 방식 사용 가능한 곳 신호 대부분의 운영 체제, 일부 시스템은 C 라이브러리에서만 지원 소켓 대부분의 운영 체제 메시지 큐 대부분의 운영 체제 파이프 모든 POSIX시스템, 윈도우즈 공유 메모리 모든 POSIX시스템, 윈도우즈 신호(Signal)신호는 유닉스 계열, POSIX 호환 운영 체제에서 쓰이는 제한된 형태의 IPC 방법 중 하나 입니다. 프로세스나 동일 프로세스 내의 특정 스레드..
이번 포스팅은 저번 포스팅인 프로세스란 무엇인가 에서 살짝 이어지는 내용입니다.저번 포스팅에서 프로세스의 상태전이, 스케줄링에 관한 이야기를 했는데 실제로 프로세스가 실행 상태에 있다가 준비 상태로 전이 되면 그 프로세스가 사용하던 정보와 상태, 그리고 레지스터 값은 어디로 가며 전에 준비 상태 이던 프로세스가 실행 상태로 전이 될때 그 프로세스가 가지고 있던 정보가 어디서로부터 오느냐 라는 문제가 생기는데.이럴때 사용하는 방식이 문맥 교환(Context Switching)이다.문맥 교환이란 실행 상태인 A 프로세스와 준비 상태인 B 프로세스가 존재 할때.인터럽트나 입출력 이벤트로 인해 둘 프로세스의 상태가 서로 전이 된다고 하자.그러면 A 프로세스는 실행 -> 준비 상태가 되며, B 프로세스는 준비 -..
이번 포스팅에서는 프로세스에 대해서 알아 보겠습니다.프로세스는 우리가 컴퓨터를 만지작 거리다 보면 어디선가 한 번씩은 꼭 들어보는 단어 입니다.그래서 프로세스가 무슨 뜻이냐?프로세스는 현재 컴퓨터에서 실행중인 프로그램의 인스턴스 라고 할 수 있습니다.여기서 헷갈릴수 있는 것이 프로세스와 프로그램의 차이점을 잘 구분하지 못하는것인데.C++프로그래밍을 하는 사람이라면 간단하게 이해 할 수 있는데. 마치 클래스와 오브젝트의 차이점 같은것이다.이렇게 말하면 더 어려워 지는 듯하니 제대로 설명하면프로그램은 하드 디스크 같은 보조 메모리에 저장된 일련의 기계어(명령 코드)들로 이루어진 데이터들의 묶음이다. 그리고 이 프로그램이 구동이 된다면 주 메모리에 적재되며 메모리 상에서 실행되는 작업의 단위를 프로세스라고 한..