ucore lab5 用户进程管理 学习笔记】的更多相关文章

近几日睡眠质量不佳,脑袋一困就没法干活,今天总算时补完了.LAB5难度比LAB4要高,想要理解所有细节时比较困难.但毕竟咱不是要真去写一个OS,所以一些个实现细节就当成黑箱略过了. 这节加上了用户进程,主要逻辑是:idle_proc内核线程--子进程-->init_proc内核线程--子进程-->user_main内核线程--load_icode-->exit用户进程--子进程-->新的用户进程,然后再逐级释放 init_main: 在init内核线程中创建user_main内核线…
1. ucore lab5介绍 ucore在lab4中实现了进程/线程机制,能够创建并进行内核线程的调度.通过上下文的切换令线程分时的获得CPU,使得不同线程能够并发的运行. 在lab5中需要更进一步,实现我们平常开发接触到的.运行在用户态的进程/线程机制.用户线程通常用于承载和运行应用程序,为了保护操作系统内核,避免其被不够鲁棒的应用程序破坏.应用程序都运行在低特权级中,无法直接访问高特权级的内核数据结构,也无法通过程序指令直接的访问各种外设. 但应用程序访问高特权级数据.外设的需求是不可避免…
越学越简单,真是越学越简单啊 看视频的时候着实被那复杂的函数调用图吓到了.看代码的时候发现条理还是很清晰的,远没有没想象的那么复杂. 这节创建了俩内核线程,然后运行第一个线程,再由第一个切换到第二个. kern_init: 在vmm_init后加了一个proc_init 在最末位加了个cpu_idel proc.c&.h 枚举类proc_state定义了进程生命周期里的各种状态 // process's state in his life cycle enum proc_state { PROC…
MYSQL 用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1)       超级管理员用户(root),拥有全部权限 (2)       普通用户,由root创建,普通用户只拥有root所分配的权限 1.1 权限表的位置 数据库:mysql 与权限相关的数据表:user,db,host,tables_priv,columns_priv,procs_priv等 1.2 user表 User表存储了: (1)用户的信息:hots(用户所在的主机),user…
/****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:wdzxl198@163.com /*  转载请注明本文出处: *   http://blog.csdn.net/wdzxl198/article/details/9112123 /*************************…
/****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:wdzxl198@163.com /*  转载请注明本文出处: *   http://blog.csdn.net/wdzxl198/article/details/9120635 /*************************…
/****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:wdzxl198@163.com /*  转载请注明本文出处: *   http://blog.csdn.net/wdzxl198/article/details/9178099 /*************************…
Docker Image管理学习笔记 http://blog.csdn.net/junjun16818/article/details/38423391…
Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下文并接着运行父进程中的代码,如果我们使新进程不运行原父进程的代码,转而运行另外一个程序集中的代码,这就相当于启动了一个新程序.这里的代码我们可以理解成一个可执行程序. 所以,要运行一个新程序,需要最基本的两步: 1,创建一个可运行程序的环境,也就是进程. 2,将环境中的内容替换成你所希望的,也就是用…
https://yq.aliyun.com/articles/11192?spm=0.0.0.0.hq1MsD 随着要维护的服务器增多,遇到的各种稀奇古怪的问题也会增多,要想彻底解决这些“小”问题往往需要更深的Linux方面的知识.越专业.分工越细的工程师,在这方面的要求也就越高.这次,对MySQL Swap的问题的探索过程,就一不小心掉进了Linux Memory Managemant(Linux MM)的研究中去了,爬了很久才出来,这里做一个系列笔记. 笔记中很多内容都是参考<Underst…