[Week9] 0314

안나경·2024년 3월 14일

크프정 일상

목록 보기
64/109

어제의 이야기

어제 공부한 것

어제 한거 쭉 읽는데
지금보니까 arr에 memcopy로 넣어야했었다 라곤 하지만
사실 arr에 넣는 순간은 그냥 f_buf로 넣는단 말임?

더 모르겠어졌음.

흠...
아 알았다

현재 코드 보니까
token.s로
그때그때 자른 값을 넣은게 아니라

for(token.s = strtok_r(full_f_name_buf, " ", &save_ptr);token.s != NULL; token.s = strtok_r(NULL, " ", &save_ptr)){
		list_push_back(&file_arg, &token.elem);
    	snprintf(token.name, sizeof(token.name), "%d", count);
		printf("load token.s : %s\n", token.s);
		count += 1;

라서 보면 사실 f_buf가 자리해야할 값에
token.s가 있음.
사실 다음 token.s로 넘어가는 과정이 구현되지 않았음.
굳이 따지자면
for(f_buf ~) 로 한다음
{ token.s = f_buf로 했어야했음.

뒷부분은 그러면...

memcopy 잘하고 memset하고
char *size만큼 이동하고
(memcopy할때 형변환이 약간 다르긴한데)

주소값도 포인터 잘 넣었고?
값만 0으로 넣고
감소 추가 위치만 반전으로 하면 됐겠네.

전체적 맥락은 다 맞은거 확인해서 만족.

휴....
궁금증 해결! 행복!
중간과정 저장해서 git에 올려놔서 너무다행!

어제 알고리즘 안했음...
그럴수도...있음...

그 뒤로 file manipulation이란 영상을 봤는데
fd table을 만들래서 흠. 좀어렵지만. 그런가보군요.
했는데 사실 잘못본거였음

systemcall 영상 앞부분에 있더라....
보니까 뭔소린지 알겠더라...
D님이 물어보러 안와주셨으면 모를뻔....

총정리하기엔 딱히? 앞부분만 봐서 쓸게없고
file manipulation도.... 아무튼...
뭣보다 나 코드짜야해 바쁨

User memory access가
어느 부분에서 뭘 하는 건지 대강 이해하고 퇴근
(정확히는
main -> main 에서 syscall 함수 -> 인자를 받아 lib/user/syscall 에서 arg 갯수에 따라 syscall 처리+ 적힌 주소로 syscall handler 호출 -> syscall handler ...인데)

여기서 user stack은 OS 차원에서는 어차피 항상 access가 가능하고

확인해야하는건 user program이 요청한 syscall에 대한 address가 null ptr이거나 유효하지 않은 포인터인지 확인하여 그때부터 malloc이나 lock 같은 것 등이 가능하도록 처리하는 건데

(아니면 아예 프로세스를 kill해버림)

vaddr.h 파일에 있는 is_user_stack 등의 매크로를 확인하되 가져오는 주소를 threads/mmu.c에 있는 pml4, 4레벨 페이지맵 관련 함수로 체크하기만 하면 된다는 결론...

이제 그걸 하고나면
systemcall에서 syscall마다 분류하면 됨.

소감

흠 여태까지 막혔던 부분 많았는데
git에 제때제때 다 push해놓을걸 아쉽당..
어떻게 틀렸는지 지금은 알아볼수도 있을텐데...

오늘의 계획

변경 사항 및 일정

2시 20분 티타임
7시 채용 설명회

오전

알고...리즘 안 땡기면
user access memory 해보기

티타임...
알고리즘...

user access memory를 잘 끝내고
syscall 강의 보기...

저녁

채용 설명회...
syscall 골자를 잘 잡았음 좋겠군

오늘의 다짐

요즘은 어차피 웹툰 안볼 시간에 책 읽는거긴한데
그럴필요있을까 웹툰볼까 뭐 이런생각함

profile
개발자 희망...

0개의 댓글