IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

操作系统-核心级线程实现

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

78_1.png

1. 从某个中断开始

78_2.png

INT 0X80中断,进入内核 ,调用函数就是system_call,接下来就是执行system_call

2. 五段论中的中断入口和中断出口以及schedule

1、 首先又压栈一些用户态的信息,
2、 接下来就是具体去处理sys_fork,也就是中断要产生的效果,但是在执行sys_fork的时候可能引起切换,
3、 接下来就是看当前PCB中的state是否等于0,如果不是那么就要进行调度,就是靠schedule,完成五端论中的中间三步
4、 看它的时间片是否等于0,时间片用光了也要进行调度
5、 最后就是执行中断返回的函数ret_from_sys_call,iret也就是从内核栈到用户栈的切换
6、 下图,在ret_from_sys_call中,首先popl一些信息,就是和压栈的信息对应,然后就是iret

78_3.png
78_4.png

关于schedule

1、 调度的话首先要找下一个线程,这个在后面讲调度的时候详细说
2、 switch_to里面完成切换
3、 把当前cpu中的所有指令放在当前TR指向的段中,也就是把当前执行的信息拍下来放到原tss中,
4、 开始执行长跳转指令,
5、 把TSS(n)指给TR,也就是把新tss里的信息扣到cpu上

78_5.png

关键三步骤:

1、 INT中断 进入内核
2、 schedule的里的switch_to里的ljmp完成切换
3、 ret_from_sys_call里的iret中断出口

3. ThreadCreate

tss是寄存器,TCB(线程控制块)

创建一个线程就是做出能切换的样子,核心就是上面切换时用到的tss

首先要有TCB,然后是内核栈,把tss做好就行了

copy_process函数在进程创建的fork函数中调用,主要完成进程数据结构,各种资源的初始化。初始化方式可以重新分配,也可以共享父进程资源,主要根据传入CLONE参数来确定。

78_6.png

1、 申请内存空间,注意这是在内核中,用get_free_page(),而不是malloc

78_7.png
78_8.png

4. 如何执行我们想要的代码?

从exec这个系统调用开始
exec函数提供了一个在进程中启动另一个程序执行的方法
78_9.png
78_10.png
78_11.png

5. 总结

78_12.png

文章永久链接:https://tech.souyunku.com/?p=37217


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(68) 打赏



未经允许不得转载:搜云库技术团队 » 操作系统-核心级线程实现

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367