本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第三篇:用户进程与异常处理.所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实现用户进程 进程结构 ChCore 中每个进程都对应一个 process 结构体.slot_table 是一个进程占有的内核对象数组和元信息组成的结构体.thread_list 是连接该进程所有线程的链表.如何通过 list_head 的得到对应的对象我们在 Lab 2 里已经学习过…
本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第二篇.所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实验准备 首先一句 git merge lab2 把 Lab 2 分支合并到当前分支下. 这章中为了方便调试我手动将 CMakeLists.txt 中构建类型从 Release 改为 Debug set(CMAKE_BUILD_TYPE "Debug") # "Release…
近几日睡眠质量不佳,脑袋一困就没法干活,今天总算时补完了.LAB5难度比LAB4要高,想要理解所有细节时比较困难.但毕竟咱不是要真去写一个OS,所以一些个实现细节就当成黑箱略过了. 这节加上了用户进程,主要逻辑是:idle_proc内核线程--子进程-->init_proc内核线程--子进程-->user_main内核线程--load_icode-->exit用户进程--子进程-->新的用户进程,然后再逐级释放 init_main: 在init内核线程中创建user_main内核线…
Openstack实验笔记 制作人:全心全意 Openstack:提供可靠的云部署方案及良好的扩展性 Openstack简单的说就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管理平台 架构图: http://m.qpic.cn/psb?/V12uCjhD3ATBKt/Mf6rnJXoRGXLpebCzPTUfETy68mVidyW.VTA2AbQxE0!/b/dDUBAAAAAAAA&bo=swFuAQAAAAARB.0!&rf=viewer_4 Keystone作…
1. ucore lab5介绍 ucore在lab4中实现了进程/线程机制,能够创建并进行内核线程的调度.通过上下文的切换令线程分时的获得CPU,使得不同线程能够并发的运行. 在lab5中需要更进一步,实现我们平常开发接触到的.运行在用户态的进程/线程机制.用户线程通常用于承载和运行应用程序,为了保护操作系统内核,避免其被不够鲁棒的应用程序破坏.应用程序都运行在低特权级中,无法直接访问高特权级的内核数据结构,也无法通过程序指令直接的访问各种外设. 但应用程序访问高特权级数据.外设的需求是不可避免…
原文出处:PerfGeeks 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的.VIRT , Virtual Image (kb)RES, Resident size (kb)SHR, Shared Mem size (kb)%MEM, Memory usage(kb)SWAP, Swapped size (kb)CODE, Code size (kb)DATA, Data+Stack size (kb)nFLT, Page Fault countn…
Linux内存点滴 用户进程内存空间 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的. VIRT, Virtual Image (kb) RES, Resident size (kb) 实际使用 SHR, Shared Mem size (kb) %MEM, Memory usage(kb) SWAP, Swapped size (kb) CODE, Code size (kb) DATA, Data+Stack size (kb) nFLT, P…
1.  首先在BIOS中把启动选项设置成DVD光驱启动或者USB启动也是可以的 2.  从光盘启动之后再出现的选项中选择“Rescue installed system”然后按回车确认,具体图下图: 3.语言选择,这里我们选择默认的就可以了,因为不是图形化得,所以没有办法支持中文,键盘也选择默认然后按回车,具体如下图: 4.  在SetupNetworking这里我们根据自己的需要来确认是否启用网络,这里我选择的是不启用,如图: 5.  Continue是让虚拟系统(也就是Rescue环境)找到…
       经过实验3的介绍.我们须要来点实在的.所以将我们理解的流程用于linux系统的分析.换句话说.通过类比的方式去进行描写叙述与理解linux相关的部分. 本节的内容非常详实.并且也分析了非常久,所以长话短说.静静的去感受与理解linux内核代码的实现. 当然.我们实验的系统代码非常easy并且直接.可是linux内核经过20多年的发展,更有成千上万的开发人员共同维护,所以对于代码的书写会更加精练,对于基础相对薄弱的程序猿去理解有一些障碍,可是反过来说.更有利于我们语言知识的提高.…
>Huawei-R&S-网络工程师实验笔记20190530-FTP上传下载.STelnet登录.SFTP登录 >>实验开始,参考<Huawei-R&S-网络工程师实验笔记20190524-XXX>中的拓扑图,使用 Huawei eNSP.Wireshark.Oracle VM VirtualBox 等工具软件,并开启了左侧.右侧的路由器AR1.AR2.以下将全部使用代码展示实验过程和理解: <AR2>sy Enter system view, re…
>Huawei-R&S-网络工程师实验笔记20190525-设备登录.VRP基本配置.文件系统(环回接口.telnet远程.AAA登录.命令行.时钟.banner.文件目录) >>实验开始,参考<Huawei-R&S-网络工程师实验笔记20190524-XXX>中的拓扑图,使用 Huawei eNSP.Wireshark.Oracle VM VirtualBox 等工具软件,并开启了左侧分支网络的设备.以下将全部使用代码展示实验过程和理解: The devic…
>Huawei-R&S-网络工程师实验笔记20190524-VRP的系统.接口视图下基本操作(重命名.配置IP.VLAN接口.双工模式.console口) >>实验开始,先上拓扑图参考: 本次实验使用 Huawei eNSP.Wireshark.Oracle VM VirtualBox 等工具,并开启了左侧分支网络的设备.以下将全部使用代码展示实验过程和理解: The device is running! //设备已启动 <Huawei>sy <Huawei&g…
转载:http://francs3.blog.163.com/blog/static/4057672720109854858308/ Postgresql 8.3.3 今天应用反映数据库很慢,有些SQL执行一天都没执行完,检查数据库,发现大量会话在更新同一张表 tbl_tmp, 产生大量行锁申请等侍. --等于等侍状态的SQL (被堵住的SQL) anpstat=# select datname,procpid,query_start,current_query,waiting,client_a…
一.缘由: 在启动mongodb的时候,有Warning提示soft rlimits too low,就是用户使用进程数过小,遂调高系统资源关于用户最大进程数的限制ulimit -u. 先暂时使设置生效,ulimit -u 102400,提示: ulimit: max user processes: cannot modify limit: Operation not permitted. 修改/etc/security/limits.conf 为 * soft nproc 102400,退出s…
  所有SQL*Loader实验笔记 实验案例总结(1-7):     SQL*Loader实验笔记[一] 实验案例总结(8-13):   SQL*Loader实验笔记[二] 实验案例总结(14-19): SQL*Loader实验笔记[三]   8)加载序列 初始化 CJ@db11g>create table t2 (seqno int,name varchar2(20));   Table created. 控制文件 load data infile * into table t2 repla…
一. 检查linux内核uname -alsb_release -a 二. 用户进程可打开文件数限制1) vim /etc/security/limits.conf*       -      nofile           65535*       -      nproc           65535 在/etc/security/limits.d/90-nproc.conf中修改最大文件数和进程数*   soft  nproc   65534*   hard  nproc   6553…
用户进程跟踪 分为 基于会话级别跟踪和 实例级别跟踪: 会话级别跟踪又包括 当前会话跟踪和 非当前会话跟踪 跟踪文件位置由user_dump_dest设定,大小由max_dump_file_size 决定 生成的跟踪文件名为<SID>_ora_<SPID>.trc 其中SID为实例名称,SPID为系统进程号 通过v$session中的SQL_TRACE,SQL_TRACE_WAITS,SQL_TRACE_BINDS展示了一个会话的跟踪状态 注:    在专用服务器模式中:仅仅需要标…
system进程启动普通用户进程 关键函数是CreateProcessAsUser 主要思路是先取得目的用户的token,然后用上面的函数启动 1.从explorer中取token BOOL GetTokenByName(HANDLE &hToken,LPSTR lpName) { if(!lpName) { return FALSE; } HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; hPro…
下面我们要讲ORACLE服务器进程如何处理用户进程的请求,当一个用户进程发出了一条SQL语名:   UPDATE TABBLEA SET SALARY=SALARY*2:   首先,服务器进程把这条语句的字符转换成ASCII等效数字码,接着这个ASCII码被传递给一个HASH函数,并返回一个HASH值,服务器进程将到SHARED POOL 的共享PL/SQL区去查找是否存在同样的HASH值,如果存在,服务器进程将使用这条语句已高速缓存在SHARED POOL中的已分析过的版本来执行,如果不存在,…
本文中出现的,内核线程,轻量级进程,用户进程,用户线程等概念,如果不太熟悉, 可以参见 内核线程.轻量级进程.用户线程三种线程概念解惑(线程≠轻量级进程) Linux进程类别 虽然我们在区分Linux进程类别, 但是我还是想说Linux下只有一种类型的进程,那就是task_struct,当然我也想说linux其实也没有线程的概念, 只是将那些与其他进程共享资源的进程称之为线程. 一个进程由于其运行空间的不同, 从而有内核线程和用户进程的区分, 内核线程运行在内核空间, 之所以称之为线程是因为它没…
R-FCN.SSD.YOLO2.faster-rcnn和labelImg实验笔记 转自:https://ask.julyedu.com/question/7490 R-FCNpaper:https://arxiv.org/abs/1605.06409作者代码:https://github.com/daijifeng001/R-FCN #matlab版本这里使用python版本的代码:https://github.com/Orpine/py-R-FCN 1.下载代码git clone https:…
限制进程CPU占用率的问题,给出了一个shell脚本代码如下: renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'` 其中用到ps获取进程信息,其实 ps中%CPU一列的意义是进程实际占有CPU时间和它存活时间的比值,这个值能反应进程对CPU的消耗,但不能准确反应进程所占CPU时间占整个系统CPU的百分比. 而top输出中的%CPU这一列正是进程所占CPU时间占整个系统CPU的百分比,用于…
执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的UGA中 语句经过PGA处理后传递给实例instance 实例instance中的共享池处理这条语句 库缓冲区去判断语句如何分析--软分析(快)或硬分析(慢) 根据cbo得到执行计划,准备去执行语句.(CBO和RBO是ORACLE提供的两种优化器) 查询语句中的对象(emp表和行)存放在那个表空间,…
转:http://www.360doc.com/content/09/0315/10/26398_2812414.shtml 一:前言上个星期同事无意间说起,在用核中创建的用户空间进程中,使用printf不能显示的问题.这个问题我当时一时半会没有解释清楚.现在就从linux kernel的源代码的角度来分析该问题的原因所在. 二:fork()与execve()中stderr,stdio.stdout的继承关系 其实用继承这个词好像不太准确,要准确一点,可能复制更适合. 首先有二点: 1:父进程f…
1. launchd Mac系统下通用的进程管理器,是Mac系统下非常重要的一个进程,一般来说该进程不允许直接以命令行的形式调用.只能通过其控制管理界面,launchctl来进行控制. launchd主要功能是进程管理.可以理解成是一个常驻在后台的进程,根据用户的配置,来响应特定的系统事件.launchd既可以用于系统级别的服务,又可以用于个人用户级别的服务. 2. 在launchd的语境中,常驻进程有两种: daemon # 也就是我们常说的守护进程,这种一般对所有用户都有相同的行为,响应相同…
转自:http://blog.csdn.net/adudurant/article/details/23135661 这个概念是很多人都混淆的了,我也是,刚开始无法理解OS时,把Linux内核也当做一个进程. 其实内核本身不是以进程形式存在的,最多在初始化的过程中表现得就像一个进程,但是内核绝对没有进程的数据结构task_struct,可以严格跟进程区分开 .自从创建init 进程之后,内核就不再主动占有cpu了.只有当进程主动要求和中断到来时,内核才动一动,很快又把cpu还给合适的进程,不是想…
>Huawei-R&S-网络工程师实验笔记20190615-IP基础(AR201上配置IP) >>实验开始,先上拓扑图参考: >>>一般正常配置IP操作如下,问题在于无法继续: [AR1]/ [AR1-Ethernet0//]ip address ^ Error: Unrecognized command found at '^' position. [AR1-Ethernet0//] >>>>这是怎么回事呢?原来eNSP上对AR201这…
测试IPv6 ready logo   rfc 3315的时候,遇到一个问题,要求在收到ICMPv6 RA的时候,DHCPv6  Client要发Solicit消息.在平常的应用中,都是启动DHCPv6  Client后,client每隔一段时间就会发送Solicit,而并不是要在收到RA的时候发送.于是就修改了下kernel和client的代码,使得在kernel收到RA消息时,发送消息给DHCPv6  Client,使client发送Solicit. 思路为:使用netlink_kernel…
>Huawei-R&S-网络工程师实验笔记20190609-VLAN划分综合(Hybrid端口) >>实验开始,先上拓扑图参考: >>>实验目标:分别实现主机A.B与服务器Server的互通. [SWA]vlan batch //批处理创建vlan10.vlan20和vlan100 Info: This operation may take a few seconds. Please wait for a moment...done. Jun ::-: SWA…
>Huawei-R&S-网络工程师实验笔记20190609-VLAN划分综合(Access和Trunk端口) >>实验开始,先上拓扑图参考: >>>实验目标:将交换机连接主机的端口类型配置为Access端口,并划分到对应的VLAN中:将交换机互联端口配置为Trunk端口,并允许通过vlan10和vlan20. [SWA]vlan batch //批处理创建vlan10和vlan20 Info: This operation may take a few seco…