一、计算机概念、系统分类、状态

一、理论概念

什么是计算机?为何要有计算机?(参考电影:《模仿游戏》)

说到底,计算机就是人的奴隶,用来替代人力的工具而已。

沟通方式:

人===========人类的语言==========人  (人与人沟通)

人======== ===编程语言===========计算机(人与计算机沟通)

工作的逻辑步骤不变,只是换了沟通的方式(语言),让计算机能听得懂的语言。

什么事编程语言      ? 如  shell、python、go、C等等;

1、把想让计算机做事的步骤想清楚;

2、用一种计算机能听懂的语言(编程语言)把做事的步骤翻译下来。

什么是程序?

通俗地讲,程序就是一堆代码文件;

计算机硬件就是一堆废铁,它的运行全都受程序的控制;

硬件以外的都叫做软件;

软件可分为两大类:/

1、操作系统:操作系统就是一个协调、管理、控制计算机硬件资源与应用软件资源的控制程序;

2、应用软件

     

二、批处理系统、分时操作系统、实时操作系统

批处理系统:

从字面上理解,就是一批一批的处理人物的一种系统,严格意义,就是指用户将一批作业交给操作系统后就不再干预,由操作系统控制他们自动运行;这样我无需干涉,省了很多力气。

分时操作系统:

“分时”的含义是指多个用户使用同一台计算机,多个程序分时(分时间片)共享硬件和软件资源;即指在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过主机的终端,以交互方式使用计算机,共享主机中的资源;将CPU的时间划分为若干个片段,称为时间片,操作系统以时间片为单位,轮流为每个终端用户服务;

实时操作系统:

及时性:指系统能即时响应外部事件的请求,并在规定时间内完成对该事件的处理;

可靠性,指系统本身要安全可靠,因为像生产过程中的实时控制、航空订票等事实事务系统,信息处理的延误或丢失会带来不堪设想的后果;

三、操作系统发展史与多道技术

1、第一代计算机(1940-1955):真空管和穿孔卡片

特点:没有操作系统的概念,所有的程序设计都是直接操控硬件;

优点:每个人独享,可自己调试代码,找到并解决bug;

缺点:浪费计算机资源;

2、第二代计算机(1955-1965):晶体管和批量处理系统

特点:把代码都攒到一块,让一个CPU共享,但还是一个个的去运行,还是顺序算法(串行);

优点:批处理,节省了时间;

缺点:有人参与就得搬来搬去,太麻烦,拖慢程序运行的速度;

3、第三代计算机(1965-1980):集成电路芯片和多道程序设计

又称多道技术,指多道/多个程序:

1、空间上的复用,内存要支持同时跑进多个程序;

2、时间上的复用,多个程序要让他们能切换(什么时候且?一个程序占用时间过长时、CPU遇到IO阻塞时、等待时间时);

4、第四代计算机(1980-至今):个人计算机

操作系统的两大作用:

1)为应用程序提供如何使用硬件资源的抽象

2)把多个程序对硬件的竞争变得有序化(管理应用程序)

四、计算机的语言分类

机器语言→汇编语言→高级语言

机器语言:也称低级语言(因为离计算机硬件最近最低),是由0和1的二进制数来表达;

特点:用计算机能看懂的二进制语言(1和0)去写程序;

优点:程序运行速度快;

缺点:开发效率极低;

汇编语言:在机器语言基础上诞生的一门语言,简洁的英文字母、符号串代替二进制串;

特点:用一些英文标签代替一串二进制数字去写程序;

优点:比机器语言好一点,操作系统使用大量汇编语言(系统无须联网,速度越来越好);

缺点:开发效率低;

高级语言:如C、C++、Java、shell、python、GO、等等;

特点:用人能读懂的(英文)字符串去写程序;

优点:开发效率高;

缺点:需经过翻译计算机才能识别,导致运行速度慢;

结论:开发效率从低到高,运行速度从低到高,学习难度由难到易;

五、任务运行的三种状态

进程执行的“时间断性”决定了进程可能具有多种状态

1、就绪:某些进程“万事俱备”(必要资源),只差CPU,处于就绪队列状态;

2、执行:某些进程战友CPU并在CPU上执行其程序;

3、阻塞:某些进程由于某种原因不能继续运行下去,等待处理问题,称为等待/封锁状态,如I/O(多个等待排队)

三种状态随着执行和条件变化而发生转换:

 

进程状态转换的原因:

1)就绪→执行:

对就绪状态的进程,当进程跳读程序按一种选定的策略从中选中一个就绪进程,位置分配了处理机后,该进程便由就绪状态改变为执行状态;

2)执行→阻塞:

正在执行的进程因发生某等待事件而无法运行,则进程由执行状态变为阻塞状态;

3)阻塞→就绪:

处于阻塞状态的进程,在其等待的事件已经完成,如输入/输出完成,资源得到满足或错误处理完毕时,处于等待状态的进程并不马上转入执行状态,而是先转入就绪状态,然后再由系统进程调度程序在适当时将该进程转为执行状态;

4)执行→就绪:

正在执行的进程,因时间片用完而被暂停执行,或在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行而被迫让出处理机时,该进程便由执行状态转变为就绪状态;

任务的同步方式:同步、异步

同步:调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法; 

异步:方法一旦开始,立即返回,调用者无须等待其中方法执行完成,即可继续执行后续的方法;

举例:

1、和朋友去吃饭,点了一桌菜,饿得不行,但还是得坐着,等待厨师做菜,等菜上桌后,吃完付钱,才能和朋友去逛街购物,所以说,当前做的事做完,才能做下一件事,这就是同步调用;

2、手机打开美团外卖,点餐付费;之后继续玩转淘宝购物,不一会外卖送到了,还没耽误网购,这就是异步调用;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Linux系统目录结构

目录

说明

/

处于Linux系统树形结构的顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下

/bin

Bin是Binary的缩写。常用的二进制命令目录。比如ls、cp、mkdir、cut等;和/usr/bin类似,一些用户级gun工具

/boot

存放系统启动相关的文件,例如:kernel.grub(引导装载程序)

/dev

dev是Device的缩写。设备文件目录,比如声卡、磁盘。在Linux中一切都被看做文件,包括终端设备、磁盘等等

设备文件:/dev/sda,/dev/sda1./dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero,/dev/null,/dev/cdrom

/etc

常用系统或二进制安装包配置文件默认路径和服务器启动命令目录

passwd 用户信息文件

shadow 用户密码文件

group 存储用户组信息

fstab 系统开机自动挂载分区列表

hosts 设定用户自己的IP与主机名对应信息

/home

普通用户默认的家目录

/lib

库文件存放目录,函数库目录

/lost+found

只在CentOS6中有

默认为空,被FSCK(file system check用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题, 可利用fsck命令对文件系统进行检查)用来放置零散文件(没有名称的文件)当系统非法关机后,这里就会存放一些文件。

在 centos6 版本下,每个分区的挂载点下会有些目录

/mnt

/media

一般用来临时挂载存储设备的挂载目录,比如cdrom、U盘等目录

/opt

表示的是可选择的意思,有些软件包也会被安装在这里

/proc

操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。因此,这个目录是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个文件来获取系统信息。也就是说,这个目录的内存不再硬盘上而是在内存里。

查看CPU信息

cat /proc/cpuinfo

/sys

系统目录,存放硬件信息的相关文件

/run

运行目录,存放的是系统运行时的数据,比如进程的PID文件

/srv

服务目录,存放的是我们本地服务的相关文件

/sbin

大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin中包含的命令都是root权限才能执行的。

/tmp

用于存放临时文件,又是用户运行程序的时候会产生一些临时文件。/tmp就是用来存放临时文件的。/var/tmp目录和该目录的作用是类似的,不能存放重要数据,它的权限比较特殊。

[xf@xuexi ~]$ ls -ld /tmp

drwxrwxrwt. 27 root root 4096 12月 23 19:18 /tmp

t粘滞位(sticky bit)目录的sticky位表示这个目录里的文件只能被owner和root删除

/var

系统运行和软件运行时产生的日志信息,该目录的内容是经常变动的,存放的是一些变化的文件。比如 /var/log目录用来存放系统日志,还有/var/mail、/var/spool/cron

/usr

存放应用程序和文件

/usr/bin 普通用户使用的应用程序

/usr/sbin 管理员使用的应用程序

/usr/lib 库文件Gli bc(32位)

/usr/lib64 库文件Glibc

/lib

/lib64

都在/usr/目录下

这个目录里存放着系统最基本的动态链接共享库,白喊许多倍/bin和/sbin中的程序使用的库文件,目录/usr/lib中含有更多用于用户程序的库文件。作用类似于windows里的dll文件,几乎所有的应用程序都需要用到这些共享库

注:lib***.a是静态库222

Lib***.so是动态库

静态库在编译时被加载到二进制文件中

动态库在运行时加载到进程的内存空间中

简单的说:这些库视为了让你的程序能过正常编译运行的

posted @ 2022-06-09 18:19  秋风お亦冷  阅读(230)  评论(0编辑  收藏  举报