操作系统通过引入进程和线程,使得程序能够并发运行。 2. 共享 共享是指系统中的资源可以被多个并发进程共同使用。 有两种共享方式:互斥共享和同时共享。...系统调用 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。...大内核 大内核是将操作系统功能作为一个紧密结合的整体放到内核。 由于各模块共享信息,因此有很高的性能。 2. 微内核 由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。...读者-写者问题 允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。...管道 管道是通过调用 pipe 函数创建的,fd[0] 用于读,fd[1] 用于写。
一、环境介绍 QT版本: 5.12.6 编译器: MinGW 32 传输协议: UDP 功能介绍: 软件由客户端和服务器组成,客户端通过 UDP协议不断循环地向服务端发送文件,文件传输速率可以达到...UDT网站链接: https://udt.sourceforge.io/ UDT 项目源码官方下载地址: https://sourceforge.net/projects/udt/ UDT协议移植到QT...UDP_FILE_RECV_THREAD::~UDP_FILE_RECV_THREAD() { } /* 工程: UDP_Server 日期: 2021-04-23 作者: DS小龙哥 环境: win10 QT5.12.6...#endif } UDT::close(serv); } /* 工程: UDP_Server 日期: 2021-04-23 作者: DS小龙哥 环境: win10 QT5.12.6...UDP_FILE_RECV_THREAD::close_file() { UDT::close(serv); } /* 工程: UDP_Server 日期: 2021-05-19 作者: DS小龙哥 环境: win10 QT5.12.6
这时你就需要手动对服务器创建大文件使其空间不足了。
②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和 C语言 汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效...
保护模式下,程序不能直接访问物理地址,程序的虚拟地址需要被转换为物理地址后再去访问,地址转换是由处理器和操作系统协作完成的,处理器在硬件上提供地址转换部件,操作系统提供转换过程中需要的页表。...graph LR 逻辑地址-->线性地址 线性地址-->物理地址 全局描述符表 最初的操作系统是无法对内存段做访问限制,有了这样的需求以后,CPU厂商决定采用段描述符来实现相关的功能,在硬件一级上添加...当初的CPU厂商也并不是凭空制造出了这样一个概念,是与操作系统厂商共同协商后才有了一套硬件方面的支持。
那写一个操作系统究竟有多难呢?我结合自己的经历给大家讲一讲。 写一个操作系统有多难 先说一句废话:会者不难,难者不会。 冷启动 对于零基础的人,甚至是计算机知识零基础的人来说,难。...另一个是他用的工具都是这个作者自己写的,这固然比较牛逼,但我就想难不成做操作系统连个现成的业界常用的工具也没有么,我学了你的工具也没有普适性啊。...我在这个时期的书籍是《操作系统真相还原》,这本书一上来就讲述了一些你可能感到困惑的问题 0.1 操作系统是什么 0.2 你想研究到什么程度 0.3 写操作系统,哪些需要我来做 0.4 软件是如何访问硬件的...于是乎你在慢慢的影响下,也打开了思路,决定了解更多的操作系统。 我呢,当时的选择是阅读 linux 源码,并尝试仿写一个(最后仿写这一步放弃了)。 ?...但仿写最终放弃了,因为即便是 linux0.11 的源代码,里面都非常复杂,完全仿写还是很费时间的。
用PyQt5库,就是qt在python语言环境的库。通过库提供的qt接口实现写对联这个事情。 一、对联画布 对联画布使用QWidgets。长宽设置为self.resize(550,550) 。...,font_size*4,font_size+10), QtGui.QColor(230,0,0)) 对联的字为纯黑色,于是这里painter的笔设置为黑色painter.setPen(QtCore.Qt.black...__init__() self.text = text #self.setAttribute(QtCore.Qt.WA_StyledBackground, True)...def paintEvent(self, event): painter = QtGui.QPainter(self) painter.setPen(QtCore.Qt.black...painter.rotate(-90) if self.text: #painter.drawText(QRectF(0.0,0.0,50.0,500.0), QtCore.Qt.AlignCenter
可屏蔽中断 有些中断是不会引起系统宕机,还是网卡的例子,网络数据包通过网线达到网卡,存到网卡自己的缓冲区,这个缓冲区是会被写满的,写满以后,后来的数据就会被丢掉。...写满以后,CPU收到中断一般会马上拷贝网卡数据到内核缓冲区,但是这样的数据其实是可以丢的,不会引发崩溃,属于可屏蔽中断。 这类中断通过INTR线传到CPU引脚。...可被修复的异常 比如操作系统的缺页异常 终止程序的异常 中断描述符 一个中断源就会产生一个中断向量,每个中断向量都对应中断描述符表中的一个门描述符,任何中断 源都通过中断向量对应到中断描述符表中的门描述符
熟悉MBR引导 MBR的512字节里面也是代码,他被BIOS加载执行,自身执行的时候加载操作系统的loader,我们在没有操作系统loader的情况下先写一段测试程序,体验一下。
操作系统引导 MBR 接上一篇BIOS启动,BIOS完成了基础的硬件检测和硬件的中断向量表的初始化,然后BIOS找到MBR并且把MBR加载在内存中,跳转到该位置。...MBR引导扇区的内容是: 446字节的引导程序及参数 64字节的分区表(每个分区表项16字节,因此只能有4个主分区) 2字节的结束标志0x55和0xaa MBR只是操作系统引导的其中一个环节,并不是最直接的引导代码...,MBR的主要作用是加载操作系统提供的bootloader。...为了方便MBR找到内核加载器,约定好加载器就存储在各分区的开始扇区,这个扇区被称为操作系统引导扇区也称为OBR(OS Boot Record), 扇区里面的程序便是内核加载器,比如我们常见的x86平台上的
题目部分 如何在Oracle中写操作系统文件,如写日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...如何在Oracle中写操作系统文件,如写日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
CPU的第一条指令 正常人开机都是等到操作系统加载完毕,进入操作系统然后开始使用应用软件,在高度抽象的角度使用CPU、内存、显卡等硬件。...CPU的控制权交到了 0x7C00, 如果我们把操作系统放到磁盘或光盘,接下来就可以加载操作系统到内存,执行我们的操作系统了。 那是一片更广阔的天地。 ? 图为苹果计算机的第一代产品
认为的先规划成两部分,用户的物理内存和内核的物理内存,专项专用,内核有方法去占用用户的内存,但是规定两部分内存是专用的,内核只使用自己的物理内存。
操作系统 现代操作系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。计算机操作系统是一个复杂的系统。...而且,越靠近用户态的应用程序越容易编写,如果你不喜欢某个电子邮件阅读器你可以重新写一个或者换一个,但你不能自行写一个操作系统或者是中断处理程序。这个程序由硬件保护,防止外部对其进行修改。...在 BIOS 内有底层 I/O 软件,包括读键盘、写屏幕、磁盘I/O 以及其他过程。如今,它被保存在闪存中,它是非易失性的,但是当BIOS 中发现错误时,可以由操作系统进行更新。...操作系统博物馆 操作系统已经存在了大半个世纪,在这段时期内,出现了各种类型的操作系统,但并不是所有的操作系统都很出名,下面就罗列一些比较出名的操作系统 大型机操作系统 高端一些的操作系统是大型机操作系统...节点上运行一个小型但是真是的操作系统,通常这个操作系统是事件驱动的,可以响应外部事件。 实时操作系统 另一类操作系统是实时操作系统,这些系统的特征是将时间作为关键参数。
将待翻译文件添加到扫描列表 在 Qt 项目的 pro 文件中添加如下内容: # 告诉 Qt 翻译处理工具扫描所有当前目录下的 qml 文件 lupdate_only { SOURCES +=...生成 .ts 中间文件 点击 Qt Creaetor 菜单栏的工具->外部->Qt语言专家->更新翻译(lupdate),生成中间的 .ts 文件。 ? 此时看下面概要信息生成了如下内容: ?...开始翻译 到你的 Qt 安装目录下找到 Qt5.12.3\5.12.3\msvc2017\bin\linguist.exe 文件,不同的编译器路径可能不一样,自己仔细找一下。...完成后记得保存文件(切记切记) 生成目标二进制文件 在翻译中间文件完成后,返回 Qt Creator,还是点击 工具->外部->Qt语言专家->发布翻译(lrelease),此时你会看到生成了两个后缀为...官网:https://doc.qt.io/qt-5/qtranslator.html#load-1): 第一个参数指定当前系统语言,使用 QLocale 就可以获取到。
created by QtCreator 2012-07-27T01:01:27 # #------------------------------------------------- QT... += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = FIR TEMPLATE...p.drawLine(20 + i * 40, 20, 20 + i * 40, 620); } QBrush brush; brush.setStyle(Qt... j < 15; j++) { if (a[i][j] == 1) { brush.setColor(Qt...15); } else if (a[i][j] == 2) { brush.setColor(Qt
内核与C语言 写内核能用C标准库吗? 我们开发用户应用程序的时候,有标准库可以用,最典型的就是GUN C库,标准库一般是系统调用的封装,表面上是通过标准库访问系统资源,实际上是通过系统调用实现的。...所以自己写内核的话可以用C语言,毕竟可以编译成汇编,跟直接写汇编差不多,但是不能用C标准库,理由如上。...gcc-multilib g++-multilib yum install glibc-devel.i686 libstdc++-devel.i686 C运行时库 C运行时库与标准库不一样,可以理解为与操作系统无关的部分的汇编封装...m32b.o -Ttext 0xc0001500 -e main -o m32.bin # 指定开始的地址 ELF文件 ELF是Linux上的可执行文件,其中Entry point address相当于操作系统与文件的约定...,操作系统加载这个可执行文件的时候,去这个地方作为入口点。
gcc, gcc-c++等常用软件都会装上 # yum -y install vim* # yum install ncurses-devel zlib-devel texinfo gtk2-devel qt-devel
图二: 覆盖MBR位置写kerner.bin ? 分离用户空间和内核空间 用保护模式平坦模式寻址方式,0-3G是用户空间,3G-4G是内核空间。
领取专属 10元无门槛券
手把手带您无忧上云