[yummyHitOS] 11 day (2017.07.22)
불면증이 사라진 오늘!! 하루종일 자다 일어나서 먹고 다시 자다 일어나서 먹고.. 무한 반복을 한 야미예여!! 지금 컨디션 최상!!
한 가지 단점은... 좀 전에 일어나서 지금도 먹을 타이밍인데 못먹었네여 ㅜㅠㅜ 넘나 배고픈것~
저는 이번주 일요일에 제주도로 3박 4일 여행을 다녀와여!! 제주도!! 고등학교시절 수학여행으로 간 후 처음가보는 제주도!!
해녀분들이 잡아주시는 맛나고 싱싱한 회를 너무너무 먹고싶은 그 제주도!!!
헤에... 예승이~~ 예승이 콩 콩!! 세일러문~~ 상상만해도 행복한걸여ㅜㅠ☆
저의 맥☆뿍에서 사파리로 들어오면 참~ 빨라서 별로 로딩도 없고 잘 들어와지는데... 패러럴즈로 들어오는 윈도우10에서는 로딩이 길더라구여!! 화면이 하~~얘가지곤 이게 지금 인터넷이 끊긴건가 싶을정도로..!!!
넵 그럼 이제 여기까지 떠들게영!! 공부해야져 공부공부 재밌는 시스템공부!!
제가 처음에 포스팅할 때(아니 공부한다면서 바로 다음줄부터 딴소리 하려고하는거니!? 정신차려 야미!!) 제목부터 넣고 본문을 적거든여!!
아.. 뭐... 야미의 의식의 흐름 톸톸을 보신 분들 께서는 '야미짜식 따로 각본 대본 이런거 없이 생각나는대로 막 적는 갓 태어난 글쟁이구나?' 라고 이미 알고 계실테지만... 네! 그래서! 저번 포스팅과 이번 포스팅의 날짜가 같은 것을 눈치 채셨나여?!(이 말 한마디 하려고 이렇게 주저리주저리...)
제가 그 때 열씸히 했나바여... 이번 챕터의 소스파일인 PIC 소스파일이 7월 22일로 적혀져 있더라구여... 7일차에서 말씀 드렸다시피 모든 소스파일에 날짜를 기입해 언제 시작했는지 적어둬요!(중간 중간 파일 수정도 주석으로 적어두려다가... 자꾸 까먹어서 전부 없애버렸어여 ㅎㅎ헿헤헤헿)
방금 눈깜짝할새에 언급했었는데, 우리는 오늘 PIC 컨트롤러와 인터럽트 핸들러를 만들어 보려고 하나봐여!! 또 생각이 많아지네여... 아직 잠이 덜 깨서 생각이 별로 없어서 기분 좋았는데... 인터럽트만 보면 지금 너무 ㅂㄷㅂㄷ하게 되어여ㅜㅠㅜ 이제야 문제점을 반 정도 찾은것 같은데말이예요... 아직도 삽질의 연-속-☆
PIC
13장을 딱 들어가자마자 약간 보기 싫지만 볼 수밖에 없는 PIC 컨트롤러에 대한 설명이 나와있어요. PIC라는 것은 Programmable Interrupt Controller의 약자라고 하네요. 다음 페이지에 IRQ라는 Interrupt ReQuest 번호와 PIC 컨트롤러의 관계를 이쁜 그림으로도 표현해 주셨구요.
(뭔가 글 쓸 때 마침표를 찍으면 정없어 보이고 그렇다고 모든 문장의 끝을 느낌표로 하기엔 호불호가 갈려서 싫을 것도 같아 너무너무 고민되는 초짜 야미..ㅜㅜㅠ글 쓰시는 분들을 존경합니당)
언제나처럼 오늘도 갓승훈 선생님께서 자세히 설명을 잘 해주셔서 제가 따로 포스팅할 것은 없을 것 같아 오늘은 이만 뿅!! 하고 싶지만 조금 더 깊게 깊게 딮한 공부 참 좋지 않나여?! 까도 까도 양파처럼 계속 깔 수 있는 그런 컴퓨터니까요!
책의 그림을 좀 더 상세히 표현해 실제 하드웨어로 나타낸 그림도 있어요!! 가랏 그켬스런 하드웨어 사진!
irq map
싱기방기하지 않으세여!? 책의 그림을 봤을때엔 '아.. 암기를 해야겠군아~' 싶었는데 이 그림을 보면 데스크탑 본체를 한 번 뜯어보신 분이라면 알만한 그런 사진!! 뭔가 봤던것같은!!!(그런데 혹시 저기 가장 우측의 플로피 디스크를 모르시는 분도 있겠져!? 우리집에 많은데 필요하시면 드릴 쑤도...핳하하핳하하 예전에는 USB는 커녕 CD도 없을 때 사용한 이동식 저장매체가 플로피 디스크랍니다!!)
각 IRQ 번호에 맞게 보여주고 있어요!!....응? 모래반지 빵야빵야?
'뭐야 며칠 전에 쓴 짤 왜 재탕하고 그러세여 야미님 넘나 컨텐츠가 적으신거 아니예여?' ...ㅜㅠㅜ 글쓰기 갓난아기 야미는 상상력이 풍부하지 않아서 항상 같은 생각만 하고 사나바여ㅜㅠ 죄송해여...
프린트 포트로 사용되는 IRQ 7번까지 밖에 없네요?! 야미의 구글링 실력은 여기까지인가여?! 아니면 너무 대충 글 쓰시려고 사진 한 장만 띡 가져오신거 아녜여!?
ㅜㅠㅜ그런게 아니오라... 출처를 밝힐게여... 그런데 이 출처의 페이지에 들어가니 이것 저것 호기심이 생겨 또 시간을 30분 허비했어요! 궁금했던 것들에 대해 이것 저것 강의자료처럼 되어있더라구여!! 즐겨찾기 추가 꾺!
(출처 : http://www.talktoanit.com/A+/aplus-website/lessons-resources.html)
저기까지는 맛뵈기였습니다! 이제 본판으로 들어가보아여!
circuit diagram
책의 사진과 아주아주아주 비슷하면서 IRQ 번호와 대응되는 I0 ~ I7이 똑같지만, 책에서 마이크로 프로세서로 표현되는 부분이 PCI라는 것을 통해 PIR로 가서 PIC 컨트롤러로 이동하는 것이라고 표현된 차이점이 있는 그림이예요. INT를 보시면 Integer가 생각나신다면 개발자, Interrupt가 생각나신다면 시스템개발자 아닐까여? 아니라구여? 나대지말라구여? 넵... 쭈굴... 전자나 후자나 개발자라구여? 왜여!! 개발 재밌잖아여!! 빼액!!!
오늘따라 기분이 좋은지 잠이 덜 깼는지 글이 자꾸 삼천포로 빠지네여 ㅜㅠ 정신 뙇 잡아야지..
책에 더 이쁘게 그려져있는 마스터 PIC 컨트롤러 / 슬레이브 PIC 컨트롤러 부분은 따로 설명 안드릴게여!!
PCI
먼저, PIC와 이름이 아주 비슷한 PCI란, Peripheral Component Interconnect Bus의 약자이며 컴퓨터 메인보드에 주변 장치를 장착하는 데 쓰이는 컴퓨터 버스의 일종이라고 하네요. 주기판 위에 바로 붙는 IC 형태와 소켓에 꽂아 쓰는 확장 카드 형태로 있다고 하는데, 조금 있다가 제가 올려드릴 사진을 보시면 아!! 이거!! 꽂는거 이거!! 생각나실 정도로(물론 데스크탑 본체를 조립 혹은 분해 혹은 청소해보신 분에 한정...) 개인용 PC에 사용된다고 해요. 표준적인 확장 버스 역할 분야에서는 한 때 쓰였던 ISA 버스, VESA 로컬 버스 등을 PCI 버스로 대체되었다고 알려주는 이 곳은 바로 위.키.백.갓☆
그럼 이제 알 것 같이 생긴 PCI 버스를 보여드릴게요!! 짜란!
뭔가 빵판같이 생기기도 했고 어디서 자주 보신 것 같지 않으세여?! 저만 그랬나여!? 오늘따라 갈굼당할 것 같네여... 원래 항상 갈굼 당했다구여? 헿헤헤헤헿 갈굼은 피드백의 발판이져!!(캬 빵판 발판 라임 조아따~)
이 PCI 슬롯과 연결되는 부분은 PIR이라고 한대요. 그런데 구글링으로 PIR이라고 뙇 치면 나오는 위키백갓님의 말씀은 'Passive infrared sensor - Wikipedia' ...왠지 아닌 것 같지 않나여? 갑자기 웬 센서?
PIR
PIR이란, PCI Interrupt Routing의 약자로 위키백과도 없는 지식이예요. PCI로부터 들어온 인터럽트 신호에 대해 인터럽트 컨트롤러에 전달할 길을 알려주는 네비게이션 역할을 한대요! 네트워크에서는 통신을 하기 위해 라우터라는 장비를 이용하고, 라우터에게 할당받은 IP를 라우터에 존재하는 라우팅 테이블을 통해 서로 통신하고 인터넷도 할 수 있는데, 시스템에서도 라우팅이라는 존재가 있었네요! 좀 더 자세하게 라우팅 계산법 및 $PIR에 대해 설명이 나와있는 사이트에서 찾아냈어요. 이것 또한 출처를 드릴테니 한 번 참고해 보시면 괜찮을 것 같아요!
(출처 : https://people.freebsd.org/~jhb/papers/bsdcan/2007/article/node5.html)
야미는 컴퓨터 공부를 리눅스로 시작하여 바로 네트워크 해킹에 관심을 갖고 네트워크 해킹 툴을 개발중이기 때문에.. 라우팅이라는 세 글자가 너무도 반가웠어여! 안물안궁이시라구여? 헿헤헿 안물안궁 누가 만들었는지 참 잘만든 신조어같아여 사람 무시하기 참 좋은.. 무시당하기도 참 좋은...ㅜㅜㅠㅜ
그럼 이제 PIR 테이블을 통해 라우팅이 적절히 되면 마스터 PIC 컨트롤러 / 슬레이브 PIC 컨트롤러로 잘 도착하게 되겠져?! 참 여담인데(저의 글은 그냥 처음부터 끝까지 여담인듯..) 구글에 PCI Interrupt Routing wiki 라고 쳐서 위키백갓을 보고싶었는데 IRQ가 나오더라구여... 눙물...
자! 그럼 우리 PIC 컨트롤러에 대해 다 알았나여? 이제 궁금한 호기심은 더 이상 없는 것입니꽈~!? 있으시길 바랄게요!! 바로 저 8259 라는 숫자는 무엇을 의미할까요?
당연히 PIC 컨트롤러 반도체 소자겠지... 넵 맞습니당! 반도체 소자인데 저는 생긴 모습이 궁금해졌어요.(야미님 너무 피곤하게 사시는거 아니예여? 굳이 그런거 궁금해하지말구 그냥 우리 챕터 13이나 빨리 끝내버리면 안될까여? 넵... 빠르게 하겠습니다ㅜㅠ)
무슨 벌레같이 생겼네여..(혹시 반도체 종사자분들이 한땀 한땀 만드신건데 제가 비하한건 아니겠죠..? 소심소심..)
무슨 발인지 다리처럼 생긴게 저렇게 많을까여?! 처음에 구글링하여 찾은건 우측의 최신형 소자인데, 그 다음사진으로 좌측의 쵸큼 오래되어 보이는 소자에 부가적으로 각 핀의 역할이 적혀있기에 이 두 사진을 그림판을 통해 '이미 둘이 아닌 하나일지도~' 시켰어요!(작은 따옴표로 해둔 것은 딥플로우의 '작두' 라는 노래에서 넉살 파트의 벌스에 있는 부분이예여! 헿헤헿ㅎ넉살 매력 철철넘쳐여!!)
그렇다면 이제 또 새로운 궁금증이 생기는 양파같은 야미의 호기심!! 각 핀이 무엇을 의미하는지.. 어떻게 컨트롤러가 수행되는지.. IRQ번호가 들어와서 어디를 통해 어디로 나가는지.. 이것들이 궁금해져서 이것 또한 찾아보았어요!! 딱 여기까지만 호기심 갖고 이제 다시 책으로 돌아갈게여!!
이 사진만 봐도 어느정도 이해가 되시지 않으세여!? 책의 13.1.2절에서 이 그림에 대해 아주 잘 설명되어 있어요. IRR, ISR, IMR 레지스터 역시 이 사진에도 짜란! 하고 나와있어요.
logic sequence
1. PIC 컨트롤러에 요청이 수신되며 IRR 레지스터 비트를 1로 설정해 IRQ로부터 받을 준비를 한다.
2. PIC 컨트롤러는 INT 핀으로 신호를 받아 PCI에 인터럽트 발생을 알려준다.
3. PCI가 인터럽트 요청을 정상적으로 받으면 PIC 컨트롤러에게 'INTA 핀을 통해 신호를 보낸다.
4. PIC 컨트롤러는 IRR 레지스터에 들어온 신호를 PR(Priority Resolver)를 통해 우선순위가 높은 것을 삭제하고 ISR 레지스터의 해당 비트에 1로 설정한다. 그리고 IRQ 번호를 PCI에게 전송!
5. PCI는 인터럽트 처리 완료 후 EOI 커맨드를 PIC 컨트롤러에 보내 PIC 컨트롤러가 ISR 레지스터에 설정된 비트를 삭제하도록 해준다.
6. 2번부터 5번까지의 과정 반복!
이런 순서로 돌아간다고 할 수 있을 것 같네여!! 드디어 PIC 컨트롤러에 대해 어느정도 알아보았어요!! 나닛... 언제 책의 세 페이지를 설명하는데 스압이 이렇게 길어졌나요...
다음으로 넘어가면 I/O 포트와 PIC 컨트롤러의 관계에 대해 포트 번호와 읽기를 수행하는 레지스터, 쓰기를 수행하는 커맨드에 대해 정말정말 책 외의 다른 설명을 볼 필요 없을정도로 자세~히 설명되어 있어요! 이해만 잘 하신다면 제가 포스팅 해드릴 것이 하나도 없네요ㅜㅠ
뭔가 날로 먹으려는 것 같이 보이네여ㅜㅠ 그런데 정말 책을 보시면 설명 너무 자세해서 제가 쓸 말이 없어여.. 인용도 못하겠고 그대로 적는 방법은 저작권이 걸릴 것이라고 생각하는 야미니까여!
저도 이렇게 밑줄 쳐 가며 공부하니 충분히 이해되길래 그러는거예요!! 구박받을까 증거사진 제출하는 야미(가명, 나이불명, 경기도 거주)
마지막으로 한 가지만 더 알려드리고 챕터 13의 포스팅은 책을 그대~~로 따라하시면 끝나니까 포스팅도 끝!!
commands
인터럽트 활성화 어셈블 명령어 : STI(Set Interrupt Flag)
인터럽트 비활성화 어셈블 명령어 : CLI(Clear Interrupt Flag; Set the flag to zero)
cli는 어셈블 명령어보단 gui의 반대 개념인 Command Line Interface가 먼저 생각나에여... 익숙치 않은 너란 녀석... 참... 핳하☆
이번 챕터의 소스코드를 전부 타이핑(혹은 클론)하여 실행시켰을 때 나오는 인터럽트를 이용해 YummyHitOS와 같이 알록달록한 터미널을 구성하실 수도 있어요!!
이 구성 방법은 우선 현재 디버깅중인 인터럽트 13을 완벽히 처리하면 알려드릴게여!! 그럼 다음 챕터에서 너무나도 친숙한 Queue를 Keyboard와 결합시키는 작업을 하러 가볼까여?! 랄라랄라~ 꾜!!
Check out the yummyhit’s website for more info on who am i. If you have questions, you can ask them on E-mail.
댓글남기기