操作系统(秋招准备,自用)

一、操作系统的基本概念及特征

操作系统基本概念

操作系统是管理硬件和软件资源的一种应用程序,是运行在计算机上最重要的一种软件。他为计算机的硬件和软件提供了一种中间层,使得软件和硬件分离,让我们无需关注硬件的实现,把关注点更多的放在软件应用上
一般来说,操作系统主要提供以下几种功能
1.进程管理 2.内存管理 3.设备管理 4.文件管理 5.提供用户接口

操作系统的基本特征

并发 共享 虚拟 异步
并发:宏观上指一段时间内能运行多个程序,但是微观上是CPU对时间片的串行的占用
共享:系统的资源可以被多个并发的进程共同使用,包括互斥的共享和同时共享。互斥共享的资源称为临界区资源
互斥共享方式:在一段时间只允许一个进程(线程)访问该资源
同时访问方式:允许一段时间由多个进程同时对他们进行访问。(微观上这些进程可能是交替的对该资源进行访问
虚拟:是将物理上的实体转换为多个逻辑实体,包括时分复用和空分复用。
虚拟设备技术:将一台I/O设备虚拟为多台逻辑上的I/O设备并允许每个用户占用一台逻辑上的I/O设备。
虚拟处理机技术:在虚拟处理机技术中,利用多道程序设计技术为每道程序建立一个进程让多道程序并发执行分时使用一台处理机
虚拟存储器:使一道程序通过时分复用的方式在远小于它的内存空间中运行
异步:进程以人们不可预知的速度向前推进
并发和并行的区别:
并发:指宏观上看起来两个程序在同时运行,比如说在单核cpu上的多任务。但是从微观上看两个程序的指令是交织着运行的,你的指令之间穿插着我的指令,我的指令之间穿插着你的,在单个周期内只运行了一个指令。这种并发并不能提高计算机的性能,只能提高效率。
并行:指严格物理意义上的同时运行,比如多核cpu,两个程序分别运行在两个核上,两者之间互不影响,单个周期内每个程序都运行了自己的指令,也就是运行了两条指令。这样说来并行的确提高了计算机的效率。所以现在的cpu都是往多核方面发展。

静态链接、动态链接 、源代码到运行发什么什么

硬链接(hard link) : 可以将它理解为一个 “指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。(我第一次看硬链接的时候,满脸都是问号,大家不要纠结概念,看下面图。)
软链接(symbolic link) : 等同于 Windows 系统下的快捷方式。仅仅包括所含链接文件的路径名字。因此能链接目录,也能跨文件系统链接。但是,当删除原始文件后,链接文件也将失效。

源码到可执行文件
预处理-》编译-》汇编-》链接
参考资料

同步、异步、阻塞、非阻塞

同步,就是我调用一个功能,该功能没有结束前,我死等结果。
异步,就是我调用一个功能,不需要知道该功能结果,该功能有结果后通知我(回调通知)
阻塞,就是调用我(函数),我(函数)没有接收完数据或者没有得到结果之前,我不会返回。
非阻塞,就是调用我(函数),我(函数)立即返回,通过select通知调用者

二、进程、线程

进程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。(包括程序段,相关数据段和进程控制块PCB)
线程
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与属于同一个进程的其他进程共享进程所拥有的全部资源。

进程和线程的区别与联系

(1) 划分尺度:线程更小,所以多线程程序并发性更高;
(2) 资源分配&处理器调度:进程是资源分配的基本单位,线程是处理器调度的基本单位。  
(3) 地址空间:进程拥有独立的地址空间;线程没有独立的地址空间,同一进程内多个线程共享其资源;
(4) 执行:每个线程都有一个程序运行的入口、顺序执行序列和程序的出口,但线程不能单独执行,必须组成进程,一个进程至少有一个主线程。简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
(5)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。
(6)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
(7)处理机分给线程,即真正在处理机上运行的是线程。
(8)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
(9) 一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动。
(10)资源分配给进程,同一个进程的所有线程共享该进程所有资源。
(11)CPU分配给线程,即真正在处理器运行的是线程。

为什么有了进程还要有线程

线程产生的原因:
进程可以使多个程序能并发执行,以提高资源的利用率和系统的吞吐量;但是其具有一些缺点:
进程在同一时间只能干一件事
进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于等待的资源,仍然不会执行。
因此,操作系统引入了比进程粒度更小的线程,作为并发执行的基本单位,从而减少程序在并发执行时所付出的时空开销,提高并发性。和进程相比,线程的优势如下:
从资源上来讲,线程是一种非常"节俭"的多任务操作方式。在linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。
从切换效率上来讲,运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需时间也远远小于进程间切换所需要的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右。
从通信机制上来讲,线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进城下的线程之间贡献数据空间,所以一个线程的数据可以直接为其他线程所用,这不仅快捷,而且方便。
除以上优点外,多线程程序作为一种多任务、并发的工作方式,还有如下优点:
1、使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
2、改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序才会利于理解和修改。
线程切换需要保存线程在切换的过程中需要保存当前线程Id、线程状态、堆栈、寄存器状态等信息。其中寄存器主要包括SP PC EAX等寄存器(SP堆栈指针,指向当前栈的栈页,PC程序计数器,存储下一条将要执行的指令,EAX累加寄存器,用于加法乘法的缺省寄存器)

进程

进程的基本特性
a、动态性:进程的实质是程序的一次执行过程,它由系统创建而产生,能够被调度而执行,因申请的共享资源被其他进程占用而暂停,完成任务后被撤销。动态性是进程最重要的特性。
b、独立性:系统内多个进程可以并发执行,引入进程的目的也是为了使系统某个程序能够和其他进程并发执行。
c、异步性:进程由于共享资源和协同合作,因此产生了相互制约的关系,进程实体通过进程管理以异步的方式使用处理器和其他资源,系统必须统一调度,依据一定的算法来保证各个进程能够协同运行并共享处理器和其他资源。
d、结构特性:系统中运行的进程实体通常由程序、数据和一个PCB(进程控制块)组成。

进程的常见状态以及各种状态之间的转换

就绪状态:进程已处于准备好运行的状态,即进程已分配到除CPU外的所有

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值