[[TableOfContents]] = 참여자 명단 = || 강사 || [황현] ||출석|| ||<|3> 새싹 || [이정재] ||출석|| || [유승신] || 출석 || || [이종서] || ㅠㅠ|| = 수업 = == 진행 == 1. 장소 : ZP실 2. 시간 : 18시 - 20시 == 내용 == * CPU의 명령 실행 과정: 불러오고 해석하고 실행하는 무한루프 * 부팅 -> Bootstrapping의 준말 -> Bootstrap: 부츠 끈 * 부츠 끈을 당겨 발을 끌어올리고 발을 뻗어 위로 올라간 다음 다시 부츠 끈을 당기고...... 무한루프를 돌리면 공중을 날 수 있음! 개이득!! * 컴퓨터를 켤 때, 도대체 어떻게 OS를 초기화하는가? 소프트웨어를 돌리려면 OS가 필요한데, 그 OS도 소프트웨어인걸? * OS도 소프트웨어인데, 그러면 소프트웨어를 돌리려면 소프트웨어가 필요한 상태? 부츠 끈 당기기랑 비슷한걸! -> Bootstrapping * 전원을 인가하면 하드웨어 제조사가 미리 정의한 상태, RESET 상태로 들어간다. 이 상태에서는 몇몇 레지스터는 미리 정의된 값으로 설정됨. * 예를 들자면, i8086의 RESET 상태에서는 CS가 0xFFFF, IP가 0x0000이라서 '''다음 명령 주소'''는 0xFFFF:0x0000이 됨. * 참고: CS:IP 표기법은 매우 자주 보게 될 것임. 계산은 다음과 같이 한다: Next Instruction = CS << 4 + IP. CS 레지스터 값을 4비트 왼쪽으로 밀고 IP를 더한다. 따라서, 0xFFFF:0x0000 == 0xFFFF0 + 0x0000 == 0xFFFF0. * 이 주소는 규격에 의해 BIOS를 가리키게 되어있음. -> BIOS가 부팅을 주관하게 됨. * MBR는 아주 중요함 -> BIOS가 MBR을 읽어들여서 거기 들어있는 코드를 실행하기 때문에. * 파티션 테이블에 대한 간략한 설명 * 왜 C에는 main() 함수가 필수적인가? * OS가 프로그램을 메모리로 적재한 후 main()으로 점프시키기 때문. * `void main()`이 괜찮다고 하는 애들(ex. 윤X우씨)은 좀 맞아야 함. == 후기 == * 황현: 허허 튜터가 피곤해서 후기를 안 쓰고 뻗어버렸더니 gg * 이정재 : 할짓 없는 튜티가 후기 올릴곳이 없어 먼저 만듭니다. ㅋ 여튼 오늘은 저번에 비해 시간이 늘었네요. cpu 설명을 시작으로 부팅 설명 해 주셨을 땐 이해가 잘 됬습니다. 드디어 다음 시간 부터는 실습인가요. 기대가 됩니다. * 유승신 : 캬. 할거 많은 튜티가 뒤늦은 후기를 올립니다. ㅋ 저번에 이어 이번에도 잔다고 약 10분 늦었네요 ㅋㅋㅋ 일단 설명은 첨부터 들은 것 같아서 좋았고, 이번에 배운 부팅의 유래, C언어의 함수를 아주 살짝 배웠던 점, 인텔과 암드의 비교, OS, APP, HW 사이의 상관관계가 젤 기억에 남네요. 이번에는 특별히 좋아하는? 내용이었기에 시간이 이렇게 많이 흐른줄도 몰랐군요 ㅎㅎ 다음부터 실습인데... C언어 다 까먹었는데, "Hello World!"부터 가르쳐주시는지요??? ㅋㅋㅋ