首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 进程、线程、文件描述底层原理

说到进程,恐怕面试中最常见问题就是线程和进程关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。...Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...内核对于一个进程描述,也可以称为「进程描述符」。...为什么说 Linux线程和进程基本没有区别呢,因为从 Linux 内核角度来看,并没有把线程和进程区别对待。...当然,必须要说明是,只有 Linux 系统将线程看做共享数据进程,不对其做特殊看待,其他很多操作系统是对线程和进程区别对待线程有其特有的数据结构,我个人认为不如 Linux 这种设计简洁,增加了系统复杂度

1.3K10

Linux 进程、线程、文件描述底层原理

说到进程,恐怕面试中最常见问题就是线程和进程关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。...Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...内核对于一个进程描述,也可以称为「进程描述符」。...为什么说 Linux线程和进程基本没有区别呢,因为从 Linux 内核角度来看,并没有把线程和进程区别对待。...当然,必须要说明是,只有 Linux 系统将线程看做共享数据进程,不对其做特殊看待,其他很多操作系统是对线程和进程区别对待线程有其特有的数据结构,我个人认为不如 Linux 这种设计简洁,增加了系统复杂度

2.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux之多线程(上)——Linux线程概念

前言 本文介绍了地址空间和二级页表、Linux线程线程优缺点以及线程与进程关系等概念。...Linux下并不存在真正线程 Linux线程是用进程模拟。 如果OS真正要专门设计“线程”概念,OS就要管理线程了(先描述,再组织)。...因此,Linux下没有为“线程”专门设计对应数据结构,而是直接复用了进程PCB,用PCB来表示Linux线程”。...总结 Linux内核中严格来说是没有真正意义线程Linux用进程PCB来模拟线程,它有一套完全属于自己线程方案。 站在CPU角度,每一个PCB都可以称为轻量级进程。...线程还贡献一下进程资源和环境: 文件描述符表、每种信号处理方式(SIG_IGN、SIG_DFL或者自定义信号处理函数)、当前工作目录、用户id和组id。

22720

Linux 文件描述符详解

Overview 了解Linux怎样处理输入和输出是非常重要。一旦我们了解其原理以后,我们就可以正确熟练地使用脚本把内容输出到正确位置。同样我们也可以更好地理解输入重定向和输出重定向。...Linux标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误输出 ---- Linux系统将所有设备都当作文件来处理,而Linux...其实我们可以想象我们电脑显示器和键盘在Linux系统中都被看作是文件,而它们都有相应文件描述符与之对应。 其实我们与计算机之间交互是我可以输入一些指令之后它给我一些输出。...1>&6 vincent@geek:~/test$ cat test i love linux shell!!!1234 上面的命令很有意思:我首先把文件描述符6指向test文件。...命令如下: cat /dev/null > test1 ---- Linux使用/tmp目录来存放不需要一直保留文件,大多数Linux系统会在启动时自动删除/tmp目录中所有的文件。

2.4K30

Linux 终端tty pty pts描述

在使用Linux过程中,当我们通过ssh或者telnet等方式连接到服务器之后,会有一个相应终端来对应。而在直接登陆到Linux服务器时候也有一个对应终端。...也就是说所有登陆到当前Linux服务器用户都有一个对应终端,那他们有什么差异,终端到底是怎么一回事?本文作简要描述如下。...如果配置了Linux系统运行等级为3时候,Linux启动后就直接为文本模式,在这种情况下,当我们登陆到Linux服务器,即表明开启了一个终端模式会话。...Linux默认情况下会提供六个Terminal来让使用者登陆, 切换方式为使用:[Ctrl] + [Alt] + [F1]~[F6]组合按钮。...使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确说应该是pty从设备)。

6.7K30

Linux编程(文件描述符)

Linux编程世界中,不可能没听过文件描述符这个概念,我们操纵任何设备时候,几乎都要通过它来达成,它究竟是何方神圣呢?随我描述符科学家来一探究竟。...首先,我们在Linux下打开文件用都是如下代码: int fd = open(... ...); 当然有同学可能会说,有时也可以用fopen(),但是fopen()只是标准IO对系统IO封装,归根结底还是使用...很多人就想当然地以为打开嘛,就跟在windows下双击一个文件,或者双击一个文件夹一样,就是一个动作而已,其实不然,常说打开一个文件实际上最重要是获取这个文件描述符,描述符是用来表征这个文件代表物...内核空间中有一堆数据结构表达一个文件属性信息,但是用户空间看不见,只看见一个代表了这些信息整数i,通常我们称之为文件描述符,对文件读写和ioctl操作都是通过这个东东来达到呢!

1.7K20

小知识之Linux系统中最大进程数,最大文件描述,最大线程

今天来了解一下linux里面的一些小知识,学习一下linux里面的最大进程数,最大文件描述,最大线程问题。下面依次介绍: (一)Linux系统中最大可以起多少个进程?...)Linux系统中最大文件描述符?...,为什么linux系统要限制文件描述数量?...第一个命令代表:当前系统允许创建最大文件描述数量 第二个命令代表:当前会话session允许创建最大文件描述符,默认每个进程允许打开最大文件描述符数量应该是1024 第三个命令代表:统计当前所有进程占用文件描述总量...第一列是文件描述符数量,第二列是进程id (三)Linux系统中最大线程数量 其实最大线程数量也可以配置无限大,在资源充足情况下,但一般都有会默认限制,主要影响线程参数如下: ?

5K51

Linux内存描述之概述--Linux内存管理(一)

而内存管理其他地方则认为他们就是在处理一个(伪)NUMA系统. 2.2 Linux物理内存组织形式 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点...接着各个节点又被划分为内存管理区域, 一个管理区域通过struct zone_struct描述, 其被定义为zone_t, 用以表示内存某个范围, 低端范围16MB被描述为ZONE_DMA, 某些工业标准体系结构中...在LINUX中引入一个数据结构struct pglist_data ,来描述一个node,定义在include/linux/mmzone.h 文件中。...一个管理区(zone)由struct zone结构体来描述,在linux-2.4.37之前内核中是用typedef struct zone_struct zone_t数据结构来描述) 对于x86_32...每个物理页由一个struct page数据结构对象来描述

6.8K30

Linux】多线程——线程概念|Linux下进程与线程|线程控制

所以在Linux中,可以把进程和线程做一个统一,CPU看到task_struct称为轻量级进程 在Linux中,什么是线程:CPU调度基本单位!...Linux下并不存在真正线程而是用进程模拟! 如果OS真的要专门设计“线程”概念,OS那就需要管理线程了:先描述在组织,在Windows下确实是为这个线程专门设计了数据结构表示线程对象TCB。...所以Linux中,没有给Linux"线程"去专门设计对应数据结构!而是直接复用PCB!用PCB来表示Linux内部线程”!...也就是说,Linux内核中有没有真正意义线程,严格上来说是没有的,Linux是用进程PCB来模拟线程,是一种完全属于自己一套线程方案。...;如果是一个全局变量,在各个线程中都可以访问到 除此之外,各线程还共享以下进程资源和环境:文件描述符表、每种信号处理方式(SIG_ IGN、SIG_ DFL或者自定义信号处理函数)、 当前工作目录

27530

调整进程最大linux文件描述

1.介绍 ---- ulimit 命令提供了针对 shell和或由该 shell 启动进程占用资源控制。  持久化修改生效是在/etc/security/limits.conf中进行数据写入....写入格式为: domain:用户名/用户组名/其他(查看man limits.conf) type: hard / soft ,分别指实际最大值类型和预警值类型...maxsyslogins/priority/locks/sigpending/msgqueue/nice/rtprio/ value: -1/unlimited/infinity/ 具体值 要修改最大文件描述符重点在于...item和value 2.修改 ---- 2.1 先查看当前用户最大文件描述符数量: 1 ulimit -Hn 2 ulimit -Sn 2.2 修改当前用户进程最大文件描述符数量: 1 vim...在末尾添加 3 user soft nofile 4096  (user为用户名) 4 user hard nofile 10240 5 保存后退出登录再重新登录 6 使用上面的命令查看新limit

3K50

Linux线程线程池】

✨个人主页: 北 海 所属专栏: Linux学习之旅 操作环境: CentOS 7.6 腾讯云远程服务器 前言 线程池是一种管理线程机制,它可以在需要时自动创建和销毁线程,以及分配和回收线程资源...task() 表示执行任务,这里实际是一个 operator()() 重载,详见 Linux线程【生产者消费者模型】 中关于 Task.hpp 设计,因为我们这里也需要使用任务,所以可以直接把之前写代码拷贝过来...总结 以上就是关于 Linux线程线程池】全部内容了,作为多线程篇章收官之作,首先学习了池化技术,了解了线程特性,然后又分别实现了四个版本线程池,循序渐进,最终得到了单例版线程池,得益于模板...总之多线程算是正式结束了,下一篇将会打开网络大门 相关文章推荐 Linux线程 =====:> 【初始多线程】、【线程控制】、【线程互斥与同步】、【生产者消费者模型】 Linux...】、【vim】、Linux 权限理解和学习、听说Linux基础指令很多?

27640

Linux内核编程--文件描述

Linux操作系统中,一切皆是文件—— "Everything is a file"。 如果要在Linux系统中编写操作文件代码,需要借助文件描述符。...文件索引——文件描述符(file descriptor): 文件描述符是一个非负整数,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。...文件描述符就是内核为了高效管理已被打开文件所创建索引值。 文件描述符指向内核为每一个进程维护打开文件记录表。当要处理文件时,将文件对应文件描述符作为参数传给函数。...文件描述符在用户进程和内核之间映射关系: Linux中查看文件描述指令:lsof(list open files) lsof可以打开文件: 普通文件 目录 网络文件系统文件 字符或设备文件...标准提供默认文件描述符: 操作系统提供四种常见I/O文件操作函数 (fd表示“文件描述符”): fd = open(pathname, flags, mode) numread = read(

2.7K10

『操作系统』 进程描述与控制 Part4 线程

文章目录 2.8 线程及其实现 1.线程概念 练习题 2.线程实现及控制 例题 练习题 2.8 线程及其实现 1.线程基本概念 2.线程实现及控制 引入进程 目的: 使多个程序能并发执行...内核支持线程,它们是依赖于内核,即无论是用户进程中线程,还是系统进程中线程,它们创建、撤消、切换都由内核实现。...如果设计得当,混合式多线程机制能够结合了两者优点,舍去缺点。 练习题 1. 在以下描述中,(C)并不是多线程系统特长。 A. 利用线程并行地执行矩阵乘法运算 B....3. [2012考研试题 31]下列关于进程和线程叙述中,正确是(A) A.不管系统是否支持线程,进程都是资源分配基本单位 B.线程是资源分配基本单位,进程是调度基本单位 C.系统级线程和用户级线程切换都需要内核支持...下列对线程描述中,(B)是错误。 A.不同线程可执行相同程序 B.线程是资源分配单位 C.线程是调度和执行单位 D.同一进程中线程可共享该进程主存空间 6.

34810

Linux Linux下最大文件描述符设置

系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 65535 说明: 所有进程打开文件描述符数不能超过/proc/sys/fs/file-max...查看当前系统使用打开文件描述符数 # cat /proc/sys/fs/file-nr 1280 0 0 113986 说明:第一个数表示当前系统已分配文件描述符数(文件句柄数),第二个数为分配后已释放文件描述符数...(当前不再使用文件描述符数),第三个数为最大文件描述符数,等于file-max。...如上,表示进程可打开最大文件描述符数soft limit为65535,hard limit为65535 3、需要注销重新登录配置才会生效 4、/proc/sys/fs/nr_open是单个进程可分配最大文件数...单个进程打开文件描述符数不能超过user limit中nofilesoft limit c. nofilesoft limit不能超过其hard limit d.

5.9K42

linux系统线程通信几种方式,Linux进程线程通信方式总结

Linux系统中进程通信方式主要以下几种: 同一主机上进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式...信号量:也可以说是一个计数器,常用来处理进程或线程同步问题,特别是对临界资源访问同步问题。...Linux系统中线程通信方式主要以下几种: * 锁机制:包括互斥锁、条件变量、读写锁 互斥锁提供了以排他方式防止数据结构被并发修改方法。...* 信号量机制(Semaphore):包括无名线程信号量和命名线程信号量 * 信号机制(Signal):类似进程间信号处理 线程通信目的主要是用于线程同步。...所以线程没有像进程通信中用于数据交换通信机制。

2.3K20

Linux内存描述之高端内存--Linux内存管理(五)

4G),逻辑空间也只能描述4G线性地址空间。...2.2 高端内存 在传统x86_32系统中, 当内核模块代码或线程访问内存时,代码中内存地址都为逻辑地址,而对应到真正物理内存地址,需要地址一对一映射,如逻辑地址0xc0000003对应物理地址为...内核必须记录每个页框状态,这种状态信息保存在一个类型为page描述符中,所有的页描述存放在mem_map中 virt_to_page(addr)产生线性地址对应描述符地址。...pfn_to_page(pfn)产生对应页框号描述符地址。 在页框描述符中,几个关键字段我认为:flags、_count、_mapcount。...每个管理区又有自己描述符,描述了该管理区空闲页框,保留页数目等。每个页描述符都有到内存节点和到节点管理区连接(被放在flag高位字段)。

12.2K22

Linux——多线程

是CPU调度基本单位。 在Linux中,一个线程被称为轻量级进程。 总结: 1.Linux内核中没有真正意义上线程,是用PCB来模拟线程,是一种完全属于自己一套线程方案。...Linux线程优点是什么呢? 比Windows操作系统线程简单,维护成本低,可靠,高效。 线程具体作用呢? 就像迅雷边播放边下载。...Linux无法直接提供创建线程系统调用,只能提供创建轻量级进程接口。...: 文件描述符表 每种信号处理方式(SIG_ IGN、SIG_ DFL或者自定义信号处理函数) 当前工作目录 用户id和组id 线程异常 一个线程出异常,会影响到另外线程。...Linux方案;用户级线程,这些属性在库中,内核提供线程执行流调度。 Linux用户级线程:Linux内核轻量级进程 == 1:1 那么线程id究竟是什么呢?

88130
领券