操作系统
文章平均质量分 60
aminxiaopengyou
猪猪
展开
-
操作系统之进程,线程的浅谈
最近一直在读操作系统这本书,读了好久了,今天想写一下,自己对进程,线程的理解。想来想去,还是用一个程序来解释一下吧!请看下面的程序#include<stdio.h>int main(){ int a=0,b=0; a=3; b=4; printf("%d %d",a,b);return 0;}我写的是一个主函数,其实我想说,进程其实就是一个程序的一次执行,那怎样执行...原创 2018-05-11 19:46:34 · 163 阅读 · 0 评论 -
Linux下的软硬链接
硬链接 其实就是给磁盘中的数据在起一个别名,相当于是我们可以通过不同的文件名访问磁盘中相同的数据块。硬链接 其实就是一个文件中包含有另一个文件的路径名,当然我们可以通过访问软链接文件去找到和源文件中相同的内容。因为软连接文件中包含的是源文件的路径名。 在linnux下如何创建软链接的命令:ln -s 源文件名 链接文件名...原创 2018-08-07 01:33:35 · 82 阅读 · 0 评论 -
动态库,静态库
静态库:程序在链接时找的那个库就是静态库。 动态库:程序在运行时找的库就是动态库。 何为链接,链接就是在需要某个文件时,我们把通过表找到它,具体说,就是程序在执行时要用到这个文件,而我们只要通过某种方法找到这个文件就可以了,这就是链接。并不是说链接就是将所有的目标文件放在一个文件里头,集中去生成可执行文件。...原创 2018-08-07 02:17:55 · 85 阅读 · 0 评论 -
在32位平台下,进程的地址空间及fork()与vfork()
进程的地址空间从下到上依次为正文代码,初始化数据,未初始化数据,堆,共享区,栈,命令行参数环境变量,内核空间1G。 由此可以看出,我们在写程序时,数据它有它特定的位置。fork()函数做了些什么? 复制父进程的正文段,数据段,堆,栈这四个部分,并为3个部分分配物理块,除正文段和父进程共享外,其余三个部分都会被分配物理空间。复制之后其内容是相同的。内核除了做这些,内核还会以父进程为...原创 2018-08-24 16:41:11 · 694 阅读 · 0 评论 -
进程等待
1. 进程等待的必要性 子进程退出,父进程如果不管不顾,就可能造成“僵尸进程”的问题,进而造成内存泄露 另外,进程一旦变成僵尸状态,那就刀枪不入,kill -9也无能为力。 最后,父进程派给子进程的任务完成的如何,我们需要知道,如子进程运行完成,结果对还是不对,或者是否正常退出 父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息。2. 进程等待的方法 wait()方法 #includ...原创 2018-08-08 21:07:02 · 573 阅读 · 0 评论 -
进程终止
1. 进程退出场景 代码运行完毕,结果正确 代码运行完毕,结果不正确 代码异常终止2. 进程常见退出方法从main返回调用exit调用_exit 3. 进程异常退出:在任意点被终止了的进程我们称之为异常退出。 ctrl+c: 程序在前台出现问题用它让程序终止4. _exit函数 #include<unistd.h> void_exit(int ...原创 2018-08-08 21:09:48 · 751 阅读 · 0 评论 -
Linux——进程间通信
进程间通信目的:数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)进程控制:有些进程希望完全控制另一个进程的执行,此时控制进程能够拦截另一个进程的所有 陷入和异常,并能够及时知道它的状态改变。2.管道 管道 是Unix中最古老的进程间通信...原创 2018-08-31 10:53:25 · 194 阅读 · 0 评论 -
Linux系统——信号
信号的基本概念 为了理解信号,先从我们最熟悉的场景说起。 用户输入命令,在shell下启动一个前台进程。 用户按下ctrl+c,这个键盘输入产生一个硬件中断。 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。 中断驱动程序将Ctrl -c解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该...原创 2018-08-31 20:06:52 · 251 阅读 · 0 评论 -
计算机网络7层模型之数据链路层
1.数据链路层最基本的服务是将源机网络层来的数据可靠的传输到相邻节点的目标机网络层,为达到这一目的,数据链路层必须具备一系列相应的功能,它们主要有:如何将数据组合成数据块,在数据链路层中将这种数据块称为数据帧,数据帧是数据链路层的传送单位,如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送数据速率以使之与接收方相匹配;在两个网络实体之间提供数据链路通路的建立,维持,释放和管理.2。基...原创 2018-08-25 08:34:37 · 316 阅读 · 0 评论 -
操作系统
什么是操作系统,在以前我们没有操作系统,所谓的计算机只是一堆硬件组合在一起,要让它工作,我们必须手动的输入数据,数据经过运算后,然后再输出到相应的外设上。 但现在有了操作系统,是操作系统帮我们去做这些事情,而我们干什么,我们只是写下我们想要干的事,以及这件事情怎么干,不用去干这件事,那 干这件事就交给操作系统了。 所以这就是操作系统,大体上就是这样。操作系统的实现也是需要人去实现的,所以我想说...原创 2018-08-23 21:45:50 · 109 阅读 · 0 评论 -
操作系统之页面调度算法
(1)先进先出算法,当然是最先进来的页先出去了啊。简称FIFO(first in first out)。 该算法是基于最早进入主存器的页未被使用的可能性要大。但如果一页要经常的被访问,它在一定的时间内又会被重新的调入。这会增加磁盘启动的次数。(2)最近最久未使用算法(LRU):是基于程序使用的局部性原理,即程序一旦访问到某些位置的数据或指令时,可能在一段时间里经常会访问到它们。但在实际中,我...原创 2018-08-23 21:46:23 · 8329 阅读 · 0 评论 -
linux 下文件的权限问题
1· r:读, w:写, x:执行 ,用来表示文件或目录的权限; 2·drwxr-xr-x user1 group1 filename /举个例子(1)第一个字母代表的是该文件的类型,如d . - .l . p分别表示改文件类型为目录,普通文件,链接文件,管道类型文件;注意linux下一切皆文件。(2)从左向右每三位一分,即 rwx ,r-x, r-x,分别代表用户权限,即就是文件的...原创 2018-02-28 17:10:45 · 246 阅读 · 0 评论 -
操作系统之进程的基础知识
操作系统包括内核(进程管理,内存管理,文件管理,驱动管理)和其它程序(函数库,shell程序等)设计OS的目的:与硬件交互,管理所有软硬件资源和为用户程序(应用程序)提供一个良好的执行环境。定位:在整个计算机软硬件架构中,操作系统的定位是:一款纯正的搞管理的软件。计算机管理硬件:描述起来,用struct结构体,组织起来,用链表或其他高效的数据结构,这样就会形成一个进程队列;系统调用...原创 2018-05-18 20:49:55 · 212 阅读 · 0 评论 -
操作系统之随笔
我们将程序的地址空间有低地址到高地址分为正文代码,初始化数据,未初始化数据 ,堆,共享区,栈,命令行参数环境变量,内核空间。早期内存管理机制:要运行一个程序,会把这些程序全都装入内存,当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小问题。进程地址空间不隔离,由于程序都是直接访问物理内存,所以恶意程序可以随意修改别的进程的内存数据,以达到破坏的目的。...原创 2018-05-18 23:13:34 · 96 阅读 · 0 评论 -
Linux编译器gcc的使用和每一步的作用
第一部分:gcc的使用gcc如何使用呢?格式 gcc 选项 要编译的文件 选项 目标文件比如:gcc-E helllo.c -o hello.i选项“E”,该选项的作用是让gcc在预处理结束后停止编译过程,选项“-o”是指目标文件,".i"文件为已经过预处理的C原始程序。预处理是以#号开头的代码行预处理的主要功能包括宏替换,文件包含,条件编译,去注释等;编译(就...原创 2018-05-19 00:25:04 · 2402 阅读 · 0 评论 -
深入理解操作系统之进程,线程
其实,我觉得无论是进程还是线程它其实就是一个抽象的描述电脑到底是怎样去执行我们的程序的。 电脑的底层实现是我们的汇编,我们在用汇编去写代码的时候,我们所写的程序是直接对我们的寄存器,主存储器,累加器等这些寄存器去驱动的,所以此时我们不用考虑去如何分配资源,在早期我们就是直接使用汇编语言对这些硬件直接进行驱动的,我们可以准确的知道去使用哪些寄存器,哪些存储单元。 因为我们是直接对我们的程...原创 2018-06-28 20:39:52 · 561 阅读 · 0 评论 -
C或C++程序内存分配
一个C或C++编译的程序占用的内存分为以下几个部分:栈区:由编译器自动分配释放,存放为运行函数而分配的局部变量,函数参数,返回数据,返回地址等,它的操作方式类似于数据结构中的栈。堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。全局区(静态区):存放全局变量,静态数据,常量。程序结束后由系统释放,文字常量区:常量字符串就是存放在这里的,程序结束后由系统释放。...原创 2018-07-06 01:03:04 · 212 阅读 · 0 评论 -
回车与换行
(1)缓冲区的刷新,就是清空缓冲区,也就是将缓冲区中的数据输出或写到对应的文件中去。(2) \r:就是回车;即就是 return,回到一行的最开头(3)\n:换行,new line,即就是到下一行的意思。(4)回车是回到最开始的地方,换行即就是换到下一行。把回车和换行结合使用即就是回到下一行的开头。...原创 2018-07-19 12:20:52 · 229 阅读 · 0 评论 -
一些常见的Linux指令
1 . ls -a :列出目录下的所有文件,包括以 .开头的隐含文件。ls -d:将目录像文件一样显示,而不是显示其下的文件。如ls -d 指定目录。ls -i :输出文件的i结点的索引信息,如 ls -ai指定文件。ls -k:以K字节的形式表示文件的大小。ls -alk 指定文件。ls -l:列出文件的详细信息。ls -n:用数字的UID,GID代替名称。ls -F:在...原创 2018-07-27 00:28:36 · 248 阅读 · 0 评论 -
环境变量和命令行参数
环境变量 当要求系统运行一个程序。但没有告诉它程序所在的路径时,系统除了 在当前目录下面寻找此程序外,还会到path中指定的路径去找,我们可以通过设置环境变量,来更好的运行进程。命令行参数 命令行参数就是一个命令 ,它只是给操作系统提供了程序运行所必须要的一些信息。特别是在Linux下,命令行参数是特别重要的。...原创 2018-08-09 08:24:44 · 1357 阅读 · 0 评论 -
进程的三种状态
进程有三种基本状态:运行态,就绪态,等待态又可以称之为阻塞态。 等待态:等待某一事件 就绪态:等待系统分配处理器以便运行 运行态:正在占用处理器运行。这三种状态的转换关系 运行态到等待态:一个进程运行中启动了外围设备,等待外围设备结束,进程在运行中申请资源得不到满足,变成等待分配资源状态,进程在运行中出现了故障,变成等待人工排除干预状态。(此时已让出处理器了) 等待态到就绪态:...原创 2018-08-09 19:21:18 · 10046 阅读 · 2 评论 -
操作系统之死锁
何为死锁? 若系统中存在一组(两个或多个),它们中每个进程都占用了某种资源,又都在等待已被该进程中的其他进程占用的资源,如果这种等待永远不能结束,则说系统出现了死锁,或者说这组进程处于死锁状态。 注意,要特别指出的是,由于以下两种情况造成的进程永远等待,不属于我们要讨论的死锁问题。 (1)由于某个进程申请了系统中不存在的资源或申请的资源数超过了系统拥有的最大资源数而引起的等待。 ...原创 2018-08-24 16:40:33 · 688 阅读 · 0 评论 -
操作系统之死锁的避免
死锁的防止:是在申请资源时,采取某种策略,来以此防止产生死锁。是用防来不产生死锁。 死锁的避免:采用避的方式来不产生死锁。 安全状态:如果操作系统能保证所有进程在有限的时间内得到需要的全部资源,则称系统处于安全状态,否则说系统是不安全的。显然,处于安全状态的系统不会发生死锁,而处于不安全状态的系统可能会发生死锁。银行家算法 这个算法就是让系统处于安全状态,从而避免死锁的产生。 这个算...原创 2018-08-09 23:02:57 · 1492 阅读 · 0 评论 -
Linux操作系统——线程
线程:在一个程序里的一个执行路线就叫做线程。更准确的定义是:线程是一个进程内部的控制序列。 一切进程至少都有一个执行线程。 进程和线程: 进程是资源竞争的基本单位。 线程是程序执行的最小单位。、 线程共享进程数据,但也拥有自己的一部分数据:线程ID,一组寄存器,栈,errno,信号屏蔽字,调度优先级。 进程的多个线程共享 同一地址空间,因此Text Segment,Data Segm...原创 2018-09-01 08:32:37 · 467 阅读 · 0 评论