Linux第六次学习笔记】的更多相关文章

赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 这周主要讲解的是进程.首先老师就讲解了PCB进程结构块的数据结构,PCB进程控制块的代码包含了很多信息,最开始就是进程的状态信息 ,然后是进程状态符,进程调度相关信息等等很多部分.然后老师讲解了用fork()创建进程的过程,然后用gdb调试,跟踪创建进程的过程. 本周学习的内容在上个学期娄老师的课程中有涉及,所以难度不是非常大,但…
存储器层次结构 存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构. CPU寄存器保存着最常用的数据. 主存储器(简称主存)暂时存放存储在容量较大的.慢速磁盘上的数据. 高速缓存存储器作为一部分存储在主存中的数据和指令的缓冲区域. 访问周期由小到大:CPU<高速缓存<主存<磁盘 存储技术 随机访问存储器(RAM) 其分为两类: 静态RAM(SRAM) 作为高速缓存存储器 可在CPU芯片上,也可以在芯片下 动态RAM(DRAM) 作为主存以及图形系统的帧缓冲区 SRAM比DR…
<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核…
Linux内核分析第六周学习笔记--分析Linux内核创建一个新进程的过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的两种虚拟机制:虚拟处理器,虚拟内存 任务队列:链表每一项都是进程描述符结构. 进程描述符描述内容:打开的文件,进程地址空间,挂起信号,进程状态 Linux通过slab分配器分配task_struct结构,达到对象复用和缓存着色. 进程标识值:内核通过唯一的PID来标识每个进…
Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一. 进程的描述 操作系统内核三大功能:进程管理(核心).内存管理和文件系统. 进程控制快PCB--进程描述符task_struct数据结构 进程状态(五种状态)转化: 注意:就绪状态和运行状态都是TASK_RUNNING,具体是就绪还是执行要看系统当前的资源分配情况.…
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例: $ man ls 查看ls命令的帮助信息 $ man services 查看配置文件services的帮助信息 man 1 默认命令 5配置文件 二: 指令名称:info 指令英文原义:information 指令所在路径:/usr/bin/info 执行权限:All User 语法:i…
Spring实战第六章学习笔记----渲染Web视图 理解视图解析 在之前所编写的控制器方法都没有直接产生浏览器所需的HTML.这些方法只是将一些数据传入到模型中然后再将模型传递给一个用来渲染的视图.尽管我们编写了几个JSP视图但控制器不关心这些. 将控制器请求处理的逻辑和视图中的渲染实现解耦是SpringMVC的一个重要特性.而控制器只通过逻辑视图名来了解视图,这时就需要Spring视图解析器了. SpringMVC定义了一个名为ViewResolver的接口,大致如下所示: public i…
LINUX内核分析第六周学习总结 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.进程的描述 1.操作系统三大功能 进程管理 内存管理 文件系统 最核心的是进程管理 2.进程的作用 将信号.进程间通信.内存管理和文件系统联系起来 3.进程控制块PCB--task_struct 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符…
这周的学习笔记我想写点自己关于实验中碰到的问题和感想. 因为这次做的是白盒测试,所以我决定去测试一下上回测试的app的功能函数. 这次我用的是单元测试项目来做的白盒测试: 创建单元测试的步骤: 1.点击 “文件”->“添加”->“新建项目” 2.选择 windows应用程序-> 单元测试项目…
muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并发链接; 网络核心库 muduo是基于Reactor模式的网络库, 其核心是个事件循环EventLoop,用于响应计时器和IO事件; muduo采用基于对象(object-based)而非面向对象(object-oriented)的设计风格; 网络附属库 网络库有一些附属模块, 它们不是核心内容,…
C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则复制实参的值来初始化形参:如果形参是引用类型,则形参只是实参的别名.」 「非引用形参表示对实参的局部副本,函数内修改此类型形参时仅仅改变局部副本的值,一旦函数执行结束,这些局部变量的值就没有了,因此不影响实参的值.」 「如果函数参数为指针,同样形参是实参的副本,修改形参指针的值不影响实参,但是如果修…
第六周学习总结 ch8 String类对于有效处理字符序列信息非常重要. String对象的字符序列不能被修改删除,无法发生变化. StringBuffer类的对象实体的内存空间可以自动改变大小,便于存放一个可变的字符序列. StringTokenizer和Scanner的区别见书p194. 当程序需要处理时间时,使用Date类和Calendar类. 使用BigInteger类来处理特别大的整数. 使用String类的static方法来格式化日期和数字. ch 15 用class名称声明一个泛型…
6w学习笔记 vc控件的输入输出 单选按钮 当单击 RadioButton 控件时,其 Checked 属性设置为 true,并且调用 Click 事件处理程序.当 Checked 属性的值更改时,将引发 CheckedChanged 事件.如果 AutoCheck 属性设置为 true(默认值),则当选择单选按钮时,将自动清除该组中的所有其他单选按钮 输入 this.rdb_in.Checked = (bool)sqlDataReader["inorout"]; this.rdb_o…
一.上节总结回顾 上一节,我们回顾了经典的 C10K 和 C1000K 问题.简单回顾一下,C10K 是指如何单机同时处理 1 万个请求(并发连接 1 万)的问题,而 C1000K 则是单机支持处理 100 万个请求(并发连接 100 万)的问题. I/O 模型的优化,是解决 C10K 问题的最佳良方.Linux 2.6 中引入的 epoll,完美解决了C10K 的问题,并一直沿用至今.今天的很多高性能网络方案,仍都基于 epoll. 自然,随着互联网技术的普及,催生出更高的性能需求.从 C10…
第六周 进程的描述和进程的创建 一.进程描述符task_struct数据结构 1.操作系统三大功能 进程管理 内存管理 文件系统 2.进程控制块PCB——task_struct 也叫进程描述符,为了管理进程,内核需要对每个进程进行描述,它就提供了内核所需了解的进程信息. struct task_struct数据结构很庞大,1235行~1644行 3.Linux进程状态 Linux进程的状态与操作系统原理中的描述的进程状态有所不同 操作系统状态: 就绪态 运行态 阻塞态 linux进程状态: 4.…
视频知识学习 给MenuOS增加time和time-asm命令 1.更新menu代码到最新版 2.再main()函数中增加MenuConfig 3.增加对应的Time函数和TimeAsm函数(这里的函数要换成我们自己编写的使用系统调用的函数,比如mkdir和mkdirAsm) 4.make rootfs (帮我们自动编译自动生成根文件系统,自动帮我们启动起来menuos) 使用gdb跟踪系统调用内核函数sys_time 删除旧的的menu目录,重新下载新的版本.操作如下: $ cd /home/…
一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模块的基本分析.定位思路,并熟悉了相关的优化方法. 接下来,我们将进入最后一个重要模块—— 综合实战篇.这部分实战内容,也将是我们对前面所学知识的复习和深化. 我们都知道,随着 Kubernetes.Docker 等技术的普及,越来越多的企业,都已经走上了应用程序容器化的道路.我相信,你在了解学习这些技术的同时,一定也听说过不少,基于 Dock…
一.上节回顾 上一节,我带你一起梳理了,性能问题分析的一般步骤.先带你简单回顾一下. 我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源. 从系统资源瓶颈的角度来说,USE 法是最为有效的方法,即从使用率.饱和度以及错误数这三个方面,来分析 CPU.内存.磁盘和文件系统 I/O.网络以及内核资源限制等各类软硬件资源.至于这些资源的分析方法,我也带你一起回顾了,咱们专栏前面几大模块的分析套路. 从应用程序瓶颈的角度来说,可以把性能问题的来源,分为资源瓶颈.依赖服务瓶颈以及应用自身…
第十六章:创建函数 基本的脚本函数 创建函数 1.用function关键字,后面跟函数名 function name { commands } 2.函数名后面跟空圆括号,标明正在定义一个函数 name() { commands } 如果两个函数的名称相同,那么后面的将会覆盖前面的,而且不会有提示. 使用函数 使用函数名称即可.必须先定义,再使用. #!/bin/bash f1() { echo "this is f1." } f1 function f1 { echo "th…
进程的描述和进程的创建 前言:以下笔记除了一些讲解视频中的概念记录,图示.图示中的补充文字.总结.分析.小结部分均是个人理解.如有错误观点,请多指教! PS.实验操作会在提交到MOOC网站的博客中写.…
一.环境准备 1.安装软件包 终端1 机器配置:2 CPU,8GB 内存 预先安装 docker.sysstat.perf等工具 [root@luoahong ~]# docker -v Docker version 18.09.1, build 4c52b90 [root@luoahong ~]# rpm -qa|grep sysstat sysstat-12.1.2-1.x86_64 终端2 机器配置:1 CPU,2GB 内存 预先安装ab 等工具 [root@nfs ~]#yum -y i…
一.free数据的来源 1.碰到看不明白的指标时该怎么办吗? 不懂就去查手册.用 man 命令查询 free 的文档.就可以找到对应指标的详细说明.比如,我们执行 man fre... 2.free数据的来源 [root@ccb-installment-api ~]# man free NAME free - Display amount of free and used memory in the system SYNOPSIS free [options] DESCRIPTION free…
一.查询与自动挂载 mount #查询系统中已挂载的设备 mount -a #根据配置文件/etc/fstab的内容,自动挂载 二.挂载命令格式 mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 三.挂载光盘 1.建立挂载点 mkdir /mnt/cdrom/ 2.挂载光盘 mount -t iso9660 /dev/cdrom /mnt/cdrom 两个等价(cdrom是sr0的软连接)mount -t iso9660 /dev/sr0 /mnt/cdrom 四.卸载命令…
一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2.温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源码就复杂多了.所以,我依旧建议,操作之前别看源码,避免先入为主,要把它当成一个黑盒来分析.这样 你可以更好把握住,怎么从系统的资源使用问题出发,分析出瓶颈所在的应用,以及瓶颈在应用中大概的位置 3.应用环境 1.运行目标应用 docker run -v /tmp:/tmp --name=app -i…
一.环境准备 1.安装软件包 终端1 机器配置:2 CPU,8GB 内存 预先安装 docker.sysstat.perf等工具 [root@luoahong ~]# docker -v Docker version 18.09.1, build 4c52b90 [root@luoahong ~]# rpm -qa|grep sysstat sysstat-12.1.2-1.x86_64 终端2 机器配置:1 CPU,2GB 内存 预先安装ab 等工具 [root@nfs ~]#yum -y i…
虚拟存储器 虚拟存储器是硬件异常.硬件地址翻译.主存.磁盘文件和内核软件的完美交互. 虚拟存储器的特点: 中心的 强大的 危险的 物理和虚拟寻址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数据 每个字节都有一个唯一的物理地址 第一个字节的地址为0,接下来的抵制依次+1 这种方式称为物理寻址 虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,该地址被送到存储器之前先转换成适当的物理地址.该任务叫做地址翻译. 地址需要CPU硬件和操作系统之间紧密合作 存储器管理单元(在CPU上)利…
第十八章 调试 内核级开发的调试工作远比用户级开发艰难,它带来的风险比用户级别更高. 一.准备开始 1. 准备工作需要: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在用户级程序中bug常常表现得清晰(执行foo就会让程序立即产生核心信息转储)但是内核中的bug表现得不像用户级程序中那么清晰.因为内核.用户以及硬件之间的交互很微妙. 3. 调试的主要思想是让bug重现,但是在内核中这并不是很容易做到的.因此,在跟踪bug的时候,掌握的信息越多越好. 二.内核中的bug…
---恢复内容开始--- 第五章 系统调用 一.与内核通信 1.系统调用在用户控件进程和硬件设备之间添加了一个中间层. 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系统中,而在用户控件和系统的其余部分提供这样一层公共接口 2.作用 在Linux中,系统调用是用户空间访问内核的唯一手段 . 二.API.POSIX和C库 Linux的系统调用作为C库的一部分提供.C库:Unix系统的主要API,包括标准C库函数和系统调用接口,即POSIXdM大部分API.…
一.上节回顾 上一节,我带你学习了 Linux 网络的基础原理.简单回顾一下,Linux 网络根据 TCP/IP模型,构建其网络协议栈.TCP/IP 模型由应用层.传输层.网络层.网络接口层等四层组成,这也是 Linux 网络栈最核心的构成部分. 应用程序通过套接字接口发送数据包时,先要在网络协议栈中从上到下逐层处理,然后才最终送到网卡发送出去:而接收数据包时,也要先经过网络栈从下到上的逐层处理,最后送到应用程序. 了解 Linux 网络的基本原理和收发流程后,你肯定迫不及待想知道,如何去观察网…
一.上节回顾 前面内容,我们学习了 Linux 网络的基础原理以及性能观测方法.简单回顾一下,Linux网络基于 TCP/IP 模型,构建了其网络协议栈,把繁杂的网络功能划分为应用层.传输层.网络层.网络接口层等四个不同的层次,既解决了网络环境中设备异构的问题,也解耦了网络协议的复杂性. 基于 TCP/IP 模型,我们还梳理了 Linux 网络收发流程和相应的性能指标.在应用程序通过套接字接口发送或者接收网络包时,这些网络包都要经过协议栈的逐层处理.我们通常用带宽.吞吐.延迟.PPS 等来衡量网…