Linux环境编程
程序员子涵
交个朋友 wx: CXYzihan (注明来意)
分享编程中的遇到的坑,成长爬坑记录,这里有三板斧,王婆本人切瓜,包甜,让你在编程路上不迷路!
一个专注于鸿蒙OpenHarmony c/c++/Linux程序员情怀 走向全栈 最终归属于架构.
展开
-
Linux 系统中, 用户态到内核态切换的过程中发生了什么?
在Linux0.11系统中,所有中断服务程序都属于内核代码。若中断时,进程在执行用户态的代码,该中断会引起CPU特权级从3级到0级的切换,此时CPU会进行堆栈的切换,CPU会从当前任务的TSS中取到新堆栈的段选择符和偏移值;CPU首先会把原用户态的堆栈指针ss和esp压入内核态堆栈,随后把标志寄存器eflags的内容和此次中断的返回位置cs,eip压入内核态堆栈。当中断处理函数结束后,将恢复内核...翻译 2020-01-28 14:01:20 · 1941 阅读 · 0 评论 -
操作系统从用户态切到内核态为什么要使用到中断?
凡是回答里说“操作系统分0环和3环”的就从底子上不对。那叫“操作系统分”的吗?那叫“CPU分”的啊!是CPU自己分了不同的工作模式,然后操作系统在这些工作模式之上封装了所谓的“用户态”和“内核态”!问的问题是“操作系统从用户态切到内核态为什么要使用到中断?”我的回答是:可能没有理解“操作系统”在这句话里是什么意思,也没有理解什么是“用户态”和“内核态”,也并不是很理解什么是“...翻译 2020-01-28 13:55:07 · 951 阅读 · 1 评论 -
进程、线程、以及它们之间的区别与联系
一、进程简介1.1 进程概念的引入计算机中,CPU是最宝贵的资源,为了提高CPU的利用率,引入了多道程序设计的概念。当内存中多个程序存在时,如果不对人们熟悉的“程序”的概念加以扩充,就无法刻画多个程序共同运行时系统呈现出的特征。多道程序设计:是指允许多个作业(程序)同时进入计算机系统的内存并启动交替计算的方法。也就是说,内存中多个相互独立的程序均处于开始和结束之间。从宏观上看是并行的,多道程序都...转载 2020-01-28 13:42:15 · 880 阅读 · 0 评论 -
用户级线程和内核级线程的区别
线程的实现可以分两类:用户级线程,内核级线程和混合式线程。用户级线程是指不需要内核支持而在用户程序中实现的线程,它的内核的切换是由用户态程序自己控制内核的切换,不需要内核的干涉。但是它不能像内核级线程一样更好的运用多核CPU。优点:(1) 线程的调度不需要内核直接参与,控制简单。(2) 可以在不支持线程的操作系统中实现。(3) 同一进程中只能同时有一个线程在运行,如果有一个线程使用了系统...转载 2020-01-28 13:33:48 · 546 阅读 · 0 评论 -
如何设计IO密集型多线程和CPU密集型多线程?
多线程技术是我们日常工作中遇到的最常见的技术了,它的使用经常伴随着线程池,今天我们聊聊如何设计一个合理的线程池。首先线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。...转载 2020-01-28 10:52:34 · 1452 阅读 · 0 评论 -
CPU-bound(计算密集型) 和IO bound(IO密集型)、进程vs线程
CPU-bound(计算密集型) 和IO bound(IO密集型)I/O bound指的是系统CPU效能相对硬盘和内存好很多,此时大部分CPU在等io的读写,此时CPU Loading不高。CPU bound指的是系统的硬盘和内存的性能,相对于CPU的性能要好很多,此时系统运作CPU Loading 100% ,CPU要读写,I/O在很短时间完成,而CPU还有很多运算要处理,CPU Loa...转载 2020-01-28 10:48:09 · 1901 阅读 · 0 评论 -
进程间通信的方式——信号、管道、消息队列、共享内存
进程间通信的方式——信号、管道、消息队列、共享内存 多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进...转载 2020-01-21 09:37:39 · 5403 阅读 · 0 评论 -
协议分析 - DHCP协议解码详解
DHCP协议简介DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。DHCP为客户端分配地址的方法有三种:手工...转载 2020-01-21 06:13:51 · 361 阅读 · 0 评论 -
linux多线程同步机制
linux多线程的同步机制有几种方式,我们分别来讲1、互斥量保证临界区同时有且仅有一个线程在访问互斥量函数 :初始化信互斥量pthread_mutex_init加锁 pthread_mutex_lock()解锁 pthread_mutex_unlock在加锁和解锁之间执行的代码为临界区资源,加锁和解锁必须成对出现。使用互斥量来同步进程,往往会造成cpu的浪费,比如考虑如下代码,当临街...转载 2020-01-22 02:35:10 · 310 阅读 · 0 评论 -
linux的文件查找方式和文件的存储结构
一个文件由目录项、inode和数据块组成:目录项:包括文件名和inode节点号。Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。数据块:包含文件的具体内容。理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个扇区一个扇区地读取,这样效率太低,而是一次性连续读...转载 2020-01-22 02:29:28 · 399 阅读 · 0 评论 -
HTTP返回值说明
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一:1xx : 信息响应类,表示接收到请求并且继续处理2xx : 处理成功响应类,表示动作被成功接收、...转载 2020-01-25 08:29:15 · 836 阅读 · 0 评论 -
TCP/IP协议:各层协议帧格式
一、1、OSI与TCP/IP对应:TCP/IP各层功能:链路层:包括操作系统的设备驱动程序和计算机的网卡,提供底层传输服务。网络层:为数据选择路由,在众多计算机和网络设备组成的网络中选择一条传输路线进行传输。传输层:提供两台主机端对端的通信服务,进行传输控制。应用层:复制应用程序的特定处理。3、协议帧封装当发送数据时,对于一帧数据,每一层会封装上自己的头,而收数据时去掉上层的头,如...转载 2020-01-22 02:41:53 · 869 阅读 · 0 评论