linux 管道线程,进程_线程_管道

1. 简述Linux操作系统内核的作用和解决的问题

Linux操作系统内核主要功能是管理和操纵计算机硬件,对计算机硬件资源进行抽象,隐藏硬件具体参数细节. 为上层应用程序和用户提供一个抽象层次更高, 使用更加简便的交互接口 ---> 系统调用 ---> 系统库 ---> Shell.

2. 进程_线程

【个人简易理解】

举个例子:一台四核电脑,可同时运行多个软件【word,ppt…】,开启的word软件算是一个进程,然后在软件里面进行编辑、同时也在统计字数等操作,就是同一个进程里面多个线程。这多个线程均能访问word中的内容,但是线程之间并没有任何关联。

进程:活的程序,正在运行的程序;【线程的容器】;

线程:可共享进程的内存空间。【可共享进程的堆空间,不共享栈】

程序:死的进程,一个还没有运行的进程。

【操作系统面试题】

进程和线程的区别?

解析:

1.1 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元

1.2 同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。

1.3 进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束

1.4 线程是轻两级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的

1.5 线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源

1.6 线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志

3. 管道

管道pipe:管道是一种半双工的通信方式,数据只能单向流动。管道是一种两个进程间进行单向通信的机制。在Shell中, 使用 "|" 来定义管道来把一个命令的输出通过"管道"传输到另一个程序的输入

其本质是一个伪文件(实为内核缓冲区)

由两个文件描述符引用,一个表示读端,一个表示写端。

规定数据从管道的写端流入管道,从读端流出。

管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。

【个人简易理解】

就是在输出的同时是下一个操作的输入,这个过程就是管道。

例如:

Linux中一切皆为文件。

标准输出【读取StdOut】

标准输入【写入StdIn】

标准错误【StdErr】

【个人简易理解】

就是為了操作的一致性。即使是硬件,也可以利用系統調用進行讀寫操作。

从键盘、鼠标输入到显示屏显示的过程,都是一个个文件到输入输出的过程。

例如:鼠标点击事件,鼠标硬件检测到压力,然后发送信号给内核接收,内核读取到信号,发内容发给各个部件【例如显卡】,最终到显示。中间就是输入输出的过程

例如,在cmd输入cat /dev/urandom > /dev/dsp,扬声器就会输出噪音。这就是cmd【系统调用】到硬件的过程。

72f788e16b9f

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值