์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- KRAFTON JUNGLE
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- c#
- ํฌ๋ํํค ์ ๊ธ 4๊ธฐ
- project3
- pintos
- ์ด๋ฒคํธ ํจ์ ์คํ ์์
- ํฌ๋ํํค์ ๊ธ4๊ธฐ
- ํฌ๋ํํค ์ ๊ธ
- C
- 4๊ธฐ
- TiL
- ์ ์-์ ํฌ
- ์ถ์ํด๋์ค์์ธํฐํ์ด์ค
- ํฌ๋ํํค์ ๊ธ
- ์๊ณ ๋ฆฌ์ฆ
- User Stack
- ๋ฐฑ์ค
- ํ์ด์ฌ
- ๋คํธ์ํฌ
- ์ค๋ธ์
- ๋ค์ต์คํธ๋ผ
- BFS
- ํํ ์ค
- kraftonjungle
- Unity
- ์ฐ๊ฒฐ๋ฆฌ์คํธ
- anonymous page
- ์๊ณ ๋ฆฌ์ฆ์์ -๋๋น์ฐ์ ํ์2
- ์ ๋ํฐ
- Today
- Total
๋ง๊ฐ๋ก๊ทธ
ํฌ๋ํํค ์ ๊ธ WEEK11 DAY 88 - PintOS Project3 - Memory Mapped Files ์์ฑ ๋ณธ๋ฌธ
ํฌ๋ํํค ์ ๊ธ WEEK11 DAY 88 - PintOS Project3 - Memory Mapped Files ์์ฑ
habbn 2024. 4. 3. 21:43๐2024.04.03
๐ซ mmap-exit ํ ์คํธ ์ผ์ด์ค ๋ฌธ์
ํด๋น ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ๋ ค๋ฉด process_exit ๋ฅผ ์์ ํด์ผ ํ๋ค.
void process_exit (void) {
struct thread *t = thread_current();
/* TODO: Your code goes here.
* ์ฌ๊ธฐ์ ํ๋ก์ธ์ค ์์ ์ ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
* ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋๋ ๊ฒฝ์ฐ ๋ชจ๋ ํ์ผ์ ์์์ ์ผ๋ก ๋ซ๋๋ค.
*/
// ์ค๋ ๋์ ํ์ผ ๋ซ๊ธฐ
file_close(t->self_file);
for (int fd = 2; fd < FDT_SIZE; fd++) {
if (t->fdt[fd] != NULL) {
close(fd);
}
}
palloc_free_multiple(t->fdt, FDT_PAGES);
process_cleanup ();
hash_destroy(&t->spt.hash_table , NULL);
sema_up(&t->wait_sema);
sema_down(&t->exit_sema);
}
๋ฐ๋ก hash_destroy() ๋ฅผ ์ถ๊ฐํด์ผ ํ๋๋ฐ ์์๊ฐ ๊ผญ process_cleanup()์๋์ ์์ผํ๋ค.
์ด์ ๋ process_cleanup ํจ์์์ supplemental_page_table_kill ํจ์๋ฅผ ํธ์ถํ๊ณ , ์ด ํจ์ ์์์ hash_clear() ํจ์๋ก ์ธํด spt์ ๋ฆฌ์์ค๊ฐ ํด์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ํ hash_destory(, NULL)์ธ ์ด์ ๋ hash_clear๋ก ์ธํด hash๊ฐ ๋ค ์ง์์ ธ ์์ด์ buckets๋ง ์ง์ฐ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ํด๊ฒฐ~!
๐ซFAIL tests/vm/page-merge-par , FAIL tests/vm/page-merge-stk ,FAIL tests/vm/page-merge-mm
๋ค๋ฅธ ํ ์คํธ ์ผ์ด์ค๋ ๋ค ํต๊ณผํ๋๋ฐ ์ 3๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ง ๊ณ์ FAIL์ด์๋ค.
์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ด์ ๊ฒ์ํด๋ณด๋ lock์ ๊ฑธ์ด์ค์ผ ๋๋ ๋ถ๋ถ์ lock์ ์ ๊ฑธ์ด์๋ผ๊ณ ํด๋น ํ ์คํธ์ผ์ด์ค์์ ํธ์ถ๋๋ syscall์๋ ๋ค lock์ ๊ฑธ์ผ๋ผ๊ณ ํ๋ค.
์ผ๋จ create() ์ lock์ ๊ฑธ์๋๋ ์ฒซ ๋ฒ์ฌ page-merge-par ํ ์คํธ๊ฐ ํต๊ณผ๋์๋ค!
bool create(const char *file, unsigned initial_size) {
lock_acquire(&filesys_lock);
check_address(file);
bool success = filesys_create(file, initial_size);
lock_release(&filesys_lock);
return success;
}
๊ทผ๋ฐ ๋ณต๋ถ๋ณต์ผ๋ก ํต๊ณผ๊ฐ ๋๊ณ ๋๋จธ์ง 2๊ฐ๋ ์ ํ ๋ชจ๋ฅด๊ฒ ๋ค ใ ใ ใ ใ
์ด ํ ์คํธ ๊ฒฐ๊ณผ
3 of 141 tests failed