目录
管理的核心理念:先描述(对象有各种信息),再组织(数据结构)
一.冯诺依曼体系结构
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
输入输出设备这些外设不和cpu直接打交道,而是把数据放到内存中。cpu也是直接从内存中读数据。
输入:键盘,话筒,摄像头,磁盘,网卡...
输出:显示器,音响,磁盘,网卡,显卡...
(运算器+控制器) [cpu]:算数计算+逻辑计算
存储器:就是内存
1.为什么要有内存?
a.技术角度
cpu的运算速度 > 寄存器的速度 > L1~L3Cache > 内存 >> 外设(磁盘) >> 光盘磁带
数据角度:外设不和cpu直接交互,而是和内存交互,cpu也是如此
内存在我们看来,就是体系结构的一个大的缓存,适配外设和cpu速度不均的问题的!
b.成本角度
寄存器>>内存>>磁盘(外设)
计算机蔓延全世界 ! 那计算机一定有2个特点:有效 ,便宜
2.存储器/内存 的意义
使用较低的钱的成本,能够获得较高的性能。平衡输入输出速度慢和cpu运行速度快
几乎所有的硬件,只能被动的完成某种功能,不能主动的完成某种功能,一般都是要配合软件完成的(OS+cpu)
我们自己写的软件,编译好之后,要运行,必须先加载到内存,为什么? ?
体系结构规定!局部性原理
二.操作系统
1.管理的理解一:管理的本质-对数据做管理。
操作系统是一款软件,搞管理的软件
管理的本质:对数据做管理。
校长连我的面都不见,如何管理我呢?.
管理你要和你打交道,要和你见面吗?
他是怎么做到的?
管理的本质:不是对被管理对象进行直接管理,而是只要拿到被管理对象的所有的相关数据,我们对数据的管理,就可以体现对人的管理! ! ! ! !
2.管理的理解二:如何管好大量的数据!
如何管好大量的数据!
人认识世界的方式:
通过属性认识世界的!
一切皆对象
一切事物都可以通抽取对象的属性,来达到描述对象的目的
class OBJ {
//成员属性
}
管理的核心理念:先描述(对象有各种信息),再组织(数据结构)
对进程的管理变成了对链表的增删查改
3.进程
什么是进程?进程是一个运行起来的程序,进程=可执行程序(例如:内存中的test.exe)+该进程对应的内核数据结构(PCB)
task_struct 是一个具体的PCB,PCB进程控制块在linux中叫task_struct
程序是文件吗?——是的!文件在磁盘! !
操作系统里面可能同时存在大量的进程。操作系统要将所有的进程管理起来,
对进程的管理,本质就是对进程数据的管理。先描述(对象有各种信息),再组织(数据结构)
二.操作系统OS
1.OS介绍
操作系统:内存管理,进程管理,文件管理,驱动管理
什么是操作系统(OS),类比银行管理系统,操作系统就是银行的行长。
银行给所有人提供服务的方式是通过窗口提供的:
我们见到的所有的银行,都是一个封闭体,暴露出来一些窗口。因为银行是不相信任何人的!防止一些不法分子闯入,要防止少数人,给多数人提供服务。
类比后,操作系统也是通过给用户提供接口的方式!操作系统也是不相信任何人,
要防止少数人恶意修改代码,要给多数人提供服务。内核是使用C语言写的!接口:给我们提供底层是C语言的函数调用。系统可以调用各种函数。
操作系统不相信任何人的!不会直接暴露自己的任何数据结构,代码逻辑,其他数据相关的细节!!
操作系统是通过系统调用的方式,对外提供接口服务的!
Linux操作系统是用C语言写的,这里所谓的“接口”,本质就是C函数!
我们学习系统编程本质就是在学习这里的系统接口
windows的系统接口和Linux的系统接口一样吗? ? 肯定不一样。
操作系统管理结构官方图:
2.OS为神马要给我提供服务呢?
计算机和OS 设计出来是为了给人提供服务的
printf or cout 向显示器打印,显示器是硬件->所谓的打印,本质就是将数据写到硬件上
我们自己的C程序,没有资格向硬件写入
三.进程的查看
我们自己写的代码,编译成为可执行程序,启动之后就是一个进程!
那么别人写的呢??启动之后是不是进程呢??肯定算!!
查看进程的第一种最常用的方式:ps axj | grep ' mytest'
当前路径?:当前进程所在地路径,进程自己会维护。
每一个进程在系统中,都会存在一个唯一的标识符(pid)!就如同同学们在学校每个学生都有一个学号的东西!
pid (process id )
ctrl+c和kill -9 进程pid 杀进程
-9是9号命令,以后再谈