OS 강의 뒷부분이 안 켜져서
여태 들은거라도 정리함.
token을 구조체로 만들어서
addr 저장하고
elem으로 리스트 쓸수 있도록 하고
data를 저장하게 해서
일종의 리스트 처럼 쓰려고 했는데
이론적으로는 list_rbegin -> rend로 prev로 이동하기만하면
순회하는 것에는 문제가 없어야하는데
분명 list는 empty가 아니라고 하지만
list_entry로 elem 형태로 가져오면
거기에 들어있는 char을 print하면 그냥 null임.
이상한게 넣는 순간엔 다 printf를 했을때
값이 순차적으로 잘 찍혔단 말이지...
f_buf를 중복적으로 써서 for문을 돌기때문에
f_buf자체가 손상되어서 넣는 순간엔! 넣었지만
f_buf는 char *였으니까
주소가 바뀌어서 값도 제대로 호출 안되었을 가능성이 있음.
나중에 내가 정적배열에서 포인터를 값으로 넣을때도 비슷한 이슈가
그 포인터 자체를 넣으면 포인터가 바뀌기 때문에 arr에 잘 보존되지 않음.
다 짰는데 안된단 사실이 너무 절망적이라 그 안을 버렸었는데
사실 list가 안된다기보단 copy 문제인거같음.
오늘 해봤던 배열에서 했을때 그러한 이슈때문에
앞서 저장되었던 값이 손상되었었음.
그래서 블로그보니 값을 다 넣고,
1씩 감소시키면서 값 하나씩 아예 역참조해서 넣어버리는데
(이러면 애초에 buf가 필요없지.)
사실 memcopy로 매번 그 data 자체를
arr에 붙여넣는 과정으로 했으면 됐었을거같음.
그리고 되게 헷갈렸던 개념이
포인터 배열을 만들면 포인터를? 넣어야하지 않나 싶었는데
그러니까 char *parse[64]같은거.
이러면 포인터가 담기는 배열이긴 한데
애초에 char의 단어 하나하나가 포인터로 참조하는 형태라
parse[1] = "hi"
라고 하면
parse[1][0] = "h"고 parse[1][1] = "i"인 것임.
그래서 실제 단어수만큼
parse[단어글자수] 일필요 없고
parse[단어수]면 충분하고
그 안에 char* 형태의 단어만..
그러니까 parse[1] = buf (인데 buf는 char (별)임.)
로 넣기만 하면 충분함.
포인터의 문자열 개념은 약해서 생긴....
...
아무튼 어제 낮까지 슈도 코드 한번 다 쫙 짰고
점심먹으면서? 인가 저녁 먹으면서인가
사실 일일이 주소를 푸시하는걸 전부 쓰는것만으로 시간이 . 좀걸렸었는데
돌려봤녜서 나 안 돌려봤었어서....
다시 처음부터 돌리느라 시간이 좀 걸림.
process_wait에서 무한루프를 거는데
while(1){} 이면 충분한데
사실 이것때문에 페이지 폴트가? 뜨는건 아닌지
의심이 드는것임...
근데 사실 상관없었어
load 함수 내에서 구현해서 생긴 이슈인지 아닌지 몰라도
아무튼 그거 관련 인터럽트 문제 같았음
그래서 진짜 맞나..
블로그 코드도 슬쩍봤는데 완전 똑같아서 더모르겠는거임
근데 진짜 맞음
내가 뭐아무튼 잘못 건드렸었음
그래서 그거 확인하는거랑, 진짜 테스트 케이스 돌리는 법 알아보는거랑,
hex_dump() 사용법이나,... 해보고
저녁쯤에 list 구조체에 막혀버리니까
list_entry가 잘 되는지 안 되는지 확인하는게 너무 요원한것임
점심 쯤에 코어? 했었어서 여럿분들에게 argument passing 알려드렸었는데
팀원은 진도가 왕 잘나가고 있는거같고...
사실 그거 이해하는데도 어제 하루를 보냈던 터라 좀
슬픔.. 당연히 슬프지 내 코드가 방금 다 날아갔다
그래서 처음부터 다시 짜려니 개막막 억울!
벌써 내일은 수요일이라 기간이 아슬하기도하고.. 아무튼
그래서 다 주석처리하고 새로 짬
포인터에 포인터 배열.. 값넣기.. 엥?
하느라 오늘 아침쯤에 와서 좀 헤매다가
글자가 제대로 잘리는지 일일이 다 확인하며 진행함.
(어제 분해서 절대 미리 코드 짜지않겠다 다 확인하며 짜겠다 다짐.)
근데 배열 넣는게 왕헷갈려서 블로그 참고함
포인터 아주 화려하게씀
그래서 글자 잘 들어가는거
hex_dump() 잘 되는거 잘 확인했고
주소를 넣긴 넣는데 ....
흠 그야 char* 크기니까 8 단위로 움직일거고
단어의 맨앞 주소를 넘기는게 맞을텐데
그 맨앞주소를 null 문자 기준으로 자르나? 라고 잠깐 헤매고
주소만 넣나? 이거 8단위로 이동해줘야함? 해서 헤매고
8단위로 이동할땐 나머진 다 0으로 채워줘야함?(주소들어가는부분) 헤매고
그래서 사실상 되긴 되는데 블로그를 너무 참고해서
이론은 이해했대도 약간 현타오는중...
후....
그래도 그나마 이거 쓸 시간 없다 생각했지만
이걸 쓰면서 마음을 좀 추스렸음...
없...을걸?
코드와 씨름했음
4시쯤에 끝내고 허망해했음
30분 알고리즘 풀고 밥먹으면 딱인데
알고리즘을 풀고싶지 않음 모습
알고리즘은 아무튼 오늘 내로하고
다음 거나 봅시다
휴.......
hue.....