系统调用态的切换过程

kernel 是什么?

  1. 当计算机接上电源的那一刻,会启动一个 kernel 程序,加载到内存当中,这是整套系统第一个加载到内存当中的程序,也就是说 kernel接管了硬件的调用,kernel 它将最底层封装后,内核会向外暴露一些调用,又叫系统调用(system call)。
    当其他程序要调用资源的时候,是直接面向于kernel的。例如访问硬盘。
  2. kernel还起到一个非常关键的安全性保证,不让其他程序乱动硬件和访问其他程序的内存,因此kernelcpu存在着两种交互模式。
    kernel加载到内存前与cpu的交互是实模式,加载完毕以后,转换为保护模式
    实模式下kernel访问cpu请求,获取到的都是真实的物理地址。
    保护模式kernel本身的内存地址虚拟化隔离开,还可以将其他程序分配到一个虚拟地址。
  3. kernel中有个调度程序,会将其他的活动进程扔到一个队列里面。内核里面还有一个中断向量表,是一个hashmapkey为中断号,值为回调函数。
    在程序没启动前,程序只是一个文件,当程序启动时,内核会读取文件将其读取到内存当中。

时分系统与中断

单核cpu利用时间片来保证每个程序同时运行。也叫时分系统。

时间片如何产生的?

晶振(硬件):直流电输入,输入过程是没有间歇的,它的输出是按照一定频率分段的(交流电的输入是有间隔的)。它的输出会连接到cpu上,因为有间隔的输出,每当cpu收到一个电流信号,则会发生一个中断行为。
当中断行为产生,cpu会把当前执行的程序在cpu上的寄存器中缓存的数据写回到内存(先找到中断向量表,再通过kernel),保留上下文现场。再把另外一个(Kernel的队列按顺序取出看优先级)需要加载的程序的内存再放回到寄存器中。之后,再执行用户的程序代码,开始进入了用户态。如此循环。

晶振

键盘会产生中断告诉cpu该执行此程序了,因为外设设备可以自己产生间断的电压告诉cpu发生中断。

当执行到 system.out.println("hello world")

在这个过程中,我们首先会进入到系统调用入口程序,然后会往cpu寄存器(eax)送写了一个write函数,参数('hello world')也会放到一个寄存器(ebx),紧接着当cpu看到write后,就会开始找内核kernel,因为它不知道write函数是在内核的哪个地址上,然后cpu会埋下一个cpu的指令 int 0x80,int是指令不是变量类型,为中断的前三个字母的首字母interrupt,当读到int指令后,就会读到0x80,0x80是16进制的128,128存在中断向量表当中,找到对应的回调函数,即切换程序指令,这个回调函数的大致内容是不要执行当前程序了,开始保护当前程序的上下文现场,放入到寄存器,然后进入阻塞状态,到内核,把刚才寄存器里放的write在kernel重新注册的地址,找到这个函数运行执行,这个时候就是由用户态的程序跑到内核态。
结论,cpu最终会从内核中读取指令。程序给cpu指令,产生中断,cpu再通过内核执行函数。这个叫做系统调用态的切换过程。

函数调用:不需要产生中断,同一个程序发生两个指令,不需要切换时间片,就在同一个进程所有的内存中
系统调用成本比较高,需要产生中断。io牵扯到硬件,必然会发生中断,会有内核态切换的过程。
内核要保护进程内存,多个程序需要以中断的方式使用内核。

中断,陷阱,异常的该方面知识的扩展

https://www.cnblogs.com/broglie/p/5463359.html
https://blog.csdn.net/yikaozhudapao/article/details/89279304
https://www.cnblogs.com/yudao/p/4386775.html?utm_source=tuicool&utm_medium=referral

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容