亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 1989 | 回復(fù): 1
打印 上一主題 下一主題

[內(nèi)核入門(mén)] bochs模擬linux時(shí),重新加載cr3出現(xiàn)異常 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-11-27 17:14 |只看該作者 |倒序?yàn)g覽
本人linux菜鳥(niǎo),最近在用bochs虛擬機(jī)上模擬運(yùn)行l(wèi)inux-1.0的kernel,主要是為了學(xué)習(xí)linux的kernel的一些原理性的東西。

在linux1.0中進(jìn)程切換是靠調(diào)用任務(wù)門(mén)來(lái)做到的,但在使用調(diào)試過(guò)程中,調(diào)用任務(wù)門(mén)來(lái)切換進(jìn)程會(huì)很詭異的crash了,就是在
switch_to操作里面:
#define switch_to(tsk) \
__asm__("cmpl %%ecx,_current\n\t" \
        "je 1f\n\t" \
        "cli\n\t" \
        "xchgl %%ecx,_current\n\t" \
        "ljmp %0\n\t" \
        "sti\n\t" \
        "cmpl %%ecx,_last_task_used_math\n\t" \
        "jne 1f\n\t" \
        "clts\n" \
        "1:" \
        : /* no output */ \
        :"m" (*(((char *)&tsk->tss.tr)-4)), \
         "c" (tsk) \
        :"cx"

ljmp %0指令的時(shí)候掛掉了,沒(méi)有明確的錯(cuò)誤信息

所以自己想嘗試后續(xù)內(nèi)核中所用到的高級(jí)做法,使用棧切換和內(nèi)存目錄切換的

方式來(lái)達(dá)到進(jìn)程切換,但不爽的是當(dāng)我切換頁(yè)目錄寄存器,采用如下指令:

__asm__ __volatile__("movl %0,%%cr3": :"a" (next->tss.cr3));

但單步調(diào)試bochs執(zhí)行到上述指令時(shí)產(chǎn)生異常打印信息:
"physical address not available"

然后系統(tǒng)crash了。

開(kāi)始我以為是next->tss.cr3所指向的表有問(wèn)題,最后發(fā)現(xiàn)和表的內(nèi)容沒(méi)有多大關(guān)系,只要是改變了cr3寄存器的內(nèi)容就會(huì)產(chǎn)生
相同的異常,對(duì)linux1.0的內(nèi)核沒(méi)有其他修改,就只是加入這個(gè)地方。
虛擬機(jī)配置是單cpu,內(nèi)存64M,bochs版本是2.4.5,不知道有沒(méi)有哪位大俠遇到過(guò)同樣的問(wèn)題,望不奢指教,謝謝了。。。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-11-28 22:49 |只看該作者
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP