
Linux / 操作系统
在云端123
这个作者很懒,什么都没留下…
展开
-
通俗易懂讲解IO模型
Java I/O模型所谓的I/O就是计算机内存与外部设备之间拷贝数据的过程,因此CPU是先把外部设备的数据读到内存里,然后再进行处理。对于一个网络I/O通信过程,比如网络数据读取,会涉及两个对象,一个是调用这个I/O操作的用户线程,另外一个就是操作系统内核。一个进程的地址空间分为用户空间和内核空间,用户线程不能直接访问内核空间。当用户线程发起I/O操作后,网络数据读取操作会经历两个步骤:用户线程等待内核将数据从网卡(外部设备)拷贝到内核空间。内核将数据从内核空间拷贝到用户空间。各种I/O模型原创 2020-08-09 14:10:38 · 540 阅读 · 2 评论 -
Linux零拷贝技术
1、为什么需要零拷贝传统的 Linux 系统的标准 I/O 接口(read、write)是基于数据拷贝的,也就是数据都是 copy_to_user 或者 copy_from_user。好处:通过中间缓存的机制,减少磁盘 I/O 的操作坏处:大量数据的拷贝,用户态和内核态的频繁切换,会消耗大量的 CPU 资源,严重影响数据传输的性能。2、什么是零拷贝零拷贝就是这个问题的一个解决方案,通...转载 2019-12-31 21:19:07 · 2334 阅读 · 1 评论 -
Linux性能优化实战
平均负载预先安装stress和sysstat,如apt install stress sysstatstrees是linux压力测试工具,用来mo模拟负载升高sysstat是linux性能工具,用来监控和分析系统的性能,主要用到的两个命令mpstat用来实时查看每个cpu的性能指标及所有cpu的平均指标pidstat是进程性能分析工具,实时查看进程的cpu、内存、IO以及上下文切换等性...原创 2019-05-08 23:25:54 · 2674 阅读 · 1 评论 -
系统调用的实现原理
系统调用的实现原理 目录(?)[+]系统调用概述Linux下系统调用的实现系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提转载 2017-04-16 21:00:24 · 1043 阅读 · 0 评论 -
ubuntu server 打开中文
这里只讲tty的中文方块乱码默认的tty只能显示一个字节128或256字符,你可以用setfont命令去改tty的字体,但是永远只能局限在1字节。不能支持utf-8多字节,所以我们需要安装fbterm安装fbterm[plain] view plain copy print?sudoapt-getinstallfbtermsudo apt-get install fbterm加vide原创 2017-04-26 09:46:18 · 967 阅读 · 0 评论 -
Linux命令学习笔记(一)
1、性能监控(1)监控CPU使用情况 —— uptime命令uptime–查看系统当前状态 root:/home# uptime 18:13:05 up 16:56, 5 users, load average: 0.71, 0.19, 0.06 18:13:05: 当前时间 16:56: 系统已运行的时间 5 users: 当前在线用户 load average: 0...原创 2017-04-29 15:12:20 · 893 阅读 · 0 评论 -
Linux中fork函数分析
1、fork简介一个进程,是包括代码、数据和分配给进程的资源,fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就两个进程可以完全做相同的事,但如果初始化参数或者传入的变量不同,两个进程也可以做不同的事一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的进程中,只有少数值与原来发的进程的值不同,相当于克隆转载 2017-05-17 21:56:51 · 5558 阅读 · 1 评论 -
五种网络IO模型详解
1.同步阻塞迭代模型同步阻塞迭代模型是最简单的一种IO模型。其核心代码如下:12345678bind(srvfd);listen(srvfd);for(;;){clifd = accept(srvfd,...); //开始接受客户端来的连接read(clifd,buf,...); //从客户端读取数据dosomthingonbuf(buf);wri转载 2017-09-15 11:23:10 · 426 阅读 · 0 评论 -
浅谈Buffer I/O 和 Direct I/O
通常来说,文件I/O可以分为两种:Buffer I/ODirect I/OBuffer I/O缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。 在 Linux 的缓存 I/O 机制中,这种访问文件的方式是通过两个系统调用实现的:read() 和 write()。调用read()时,如果 操作系统内核地址空间的页缓存( page cache )有...原创 2019-03-08 16:51:36 · 10555 阅读 · 1 评论 -
Unicode字符编码—就这么回事
Unicode全称应该是unity code ,翻译过来就是统一码。意思嘛,就是统一地球上所有字符的编码。编码是什么东西呢?就是把一个东西用一个数字来表示(广义上的概念不是这样,但这里可以这么理解)。对字符的编码,就是把一个字符用一个数字来表示。最常见的是Ascii编码,学过计算机的大概都知道。字符“a”也就是小写的a,用的是数字9...转载 2018-02-23 10:07:46 · 862 阅读 · 0 评论 -
关于进程
创建进程有4种事件导致进程的创建: 1、系统初始化 2、有一个执行中的进程所调用的进程创建系统调用 3、用户自己创建进程 4、一个批处理作业的初始化 (fork)进程的状态1、运行态 2、就绪态 3、阻塞态进程的实现操作系统有一张进程表。每一项记录每个进程的各种信息。也称为进程控制块进程间通信线程因为共享一个地址空间,所以他们可以传递信息 1、竞争条件 两个或多个进程读写某个共享数原创 2017-06-17 10:41:04 · 1222 阅读 · 0 评论 -
银行家算法
我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里转载 2017-06-20 10:11:37 · 3765 阅读 · 1 评论 -
信号量机制
上篇博客中(进程同步之临界区域问题及Peterson算法),我们对临界区,临界资源,锁机制详细解读了下,留下了一个问题,就是锁机制只能判断临界资源是否被占用,所以他解决了互斥问题,但是他不能确定前面的进程是否完成,所以他不能用于同步问题中。下面就为你讲解信号量机制是如何解决这一问题的。1.信号量机制信号量机制即利用pv操作来对信号量进行处理。什么是信号量?信号量(semaphore)的数据结构为转载 2017-06-18 10:29:11 · 10985 阅读 · 0 评论 -
弹出式线程&使用单线程代码多线程化
弹出式线程介绍在如何处理到来的消息,一个消息的到达导致系统创建一个处理该消息的线程,这种线程就叫弹出式线程优点由于线程相当新,没有必须存储的寄存器、堆栈等内容,所以消息到达与处理开始之间的时间非常短 使用单线程代码多线程化介绍单线程代码所运行的系统,在内核里认为上层运行的程序是单线程进程,此时改为多线程进程,是用户级多线程。需要解决的问题一:全局变量问题解决方案1:为每个线程赋予其私有的全局变量,原创 2017-06-17 11:55:08 · 1221 阅读 · 0 评论 -
线程实现的两种方式 —— 用户空间和内核中
在用户空间中实现线程特点: 整个线程包放入用户空间中,内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程 优点: 1、用户级线程包可以在不支持线程的操作系统上实现 2、线程切换比内核快更多 3、允许每个进程有自己定制的调度算法缺点: 线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,而会阻塞整个进程从而阻塞所有线程 一个单独原创 2017-06-17 11:18:39 · 2124 阅读 · 0 评论