整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。今天是2023年1月4日,在1643年的今天,英格兰物理学家、数学家、天文学家艾萨克·牛顿出生;牛顿在科学上最卓越的贡献是微积分和经典力学的创建,而鲜为人知的是,牛顿还曾担任过英国皇家铸币局局长,他将英镑价值与黄金挂钩,奠定了其后两百年欧洲资本主义发展的基础,使英国率先迈上了近代工业化之路。回顾计算机历史上的1月4日,这一天还发生过哪些关键事件呢?1972年1月4日:惠普推出世界上第一个科学计算器图源:维基百科在过去,诸如算盘、骨头、数学表书籍(包括对数表、三角函数表等等)、工程计算尺或机械加法机(addingmachine
文章目录目的基础说明添加到内核中KconfigMakefile驱动程序编译与测试模块方式编译到内核中总结目的在上一篇文章《嵌入式Linux驱动开发01:基础开发与使用》中我们已经实现了最基础的驱动功能。在那篇文章中我们的驱动代码是独立于内核代码存放的,并且我们的驱动编译后也是一个独立的模块。在实际使用中将驱动代码放在内核代码中,并将驱动编译到内核中也是比较常见的选择,这篇文章将此进行介绍。这篇文章中内容均在下面的开发板上进行测试:《新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)》这篇文章主要是在下面文章基础上进行的:《新唐NUC980使用记录:访问以太网(LAN8720A
目录第一:线程简介第二:HarmonyOS中API函数分析 osThreadNew()第三:软件设计第四:HarmonyOS内核代码编译调试第五:运行效果第一:线程简介 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 第二:HarmonyOS中API函数分析 osThreadNew()osThreadId_tosThreadNew(osThreadFunc_t func,void*argument,constosThreadAt
取代C++,Rust真的要重写万物了!在得到Linux、谷歌、亚马逊云等大厂青睐后,最近的爆炸消息——微软已经用3.6万行Rust代码改写了Windows内核。而且推进速度相当快,4月剧透消息,过了两周,Windows11内部预览版已经用上了。微软云AzureCTO在推特上激动喊话:如果你加入了Windows11InsiderPreview内测,你将首次体验到Rust支持的Windows内核!重写的内核中,主要包括DWriteCore以及Win32GDI两个项目,并通过了Windows开机所有测试。其中,Win32GDI写于上世纪80年代末90年代初,是工龄30多年的老代码了。如今之所以被Ru
当今操作系统普遍采用64位架构,CPU最大寻址能力虽然达到了64位,但其实仅仅只是用到了48位进行寻址,其内存管理采用了9-9-9-9-12的分页模式,9-9-9-9-12分页表示物理地址拥有四级页表,微软将这四级依次命名为PXE、PPE、PDE、PTE这四项。关于内存管理和分页模式,不同的操作系统和体系结构可能会有略微不同的实现方式。9-9-9-9-12的分页模式是一种常见的分页方案,其中物理地址被分成四级页表:PXE(PageDirectoryPointerTableEntry)、PPE(PageDirectoryEntry)、PDE(PageTableEntry)和PTE(PageTab
摘要:本文介绍了LiteOS-M内核NewlibC的实现,特别是文件系统和内存分配释放部分,最后介绍了Newlib钩子函数。本文分享自华为云社区《鸿蒙轻内核M核源码分析系列二十NewlibC》,作者:zhushy。使用MuslC库的时候,内核提供了基于LOS_XXX适配实现pthread、mqeue、fs、semaphore、time等模块的posix接口(//kernel/liteos_m/kal/posix)。内核提供的posix接口与musl中的标准C库接口共同组成LiteOS-M的LibC。编译时使用arm-none-eabi-gcc,但只使用其工具链的编译功能,通过加上-nostdi
我正在运行一个相当大规模的Node.js0.8.8应用程序,它使用具有16个工作进程的集群,在一个具有超线程的16个处理器的机器上(所以32个逻辑核心)。我们发现,自从迁移到Linux3.2.0内核(从2.6.32开始)后,工作子进程之间传入请求的平衡似乎被重压到5个左右的进程,而其他11个根本没有做太多工作。这可能对吞吐量更有效,但似乎会增加请求延迟,对我们来说并不是最佳选择,因为其中许多是可以同时开始工作的长期Websocket连接。子进程都在一个套接字上接受(使用epoll),虽然这个问题在Node0.9中有一个修复(https://github.com/bnoordhuis/l
我正在运行一个相当大规模的Node.js0.8.8应用程序,它使用具有16个工作进程的集群,在一个具有超线程的16个处理器的机器上(所以32个逻辑核心)。我们发现,自从迁移到Linux3.2.0内核(从2.6.32开始)后,工作子进程之间传入请求的平衡似乎被重压到5个左右的进程,而其他11个根本没有做太多工作。这可能对吞吐量更有效,但似乎会增加请求延迟,对我们来说并不是最佳选择,因为其中许多是可以同时开始工作的长期Websocket连接。子进程都在一个套接字上接受(使用epoll),虽然这个问题在Node0.9中有一个修复(https://github.com/bnoordhuis/l
华为设备认证笔记内核部分任务管理任务管理简介基本概念1、从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。2、LiteOS的任务模块可以给用户提供多个任务,实现了任务之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。3、LiteOS中的任务是抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度,同时支持时间片轮转调度方式。4、LiteOS的任务默认有32个优先级(0-31),最高优先级为0,最低优先级为31。用户可使用的有(10-
我正在开发一个java服务,它基本上在网络文件系统中创建文件来存储数据。它在Ubuntu18.04LTS的k8s集群中运行。当我们开始限制kubernetes中的内存(limits:memory:3Gi)时,pods开始被kubernetesOOMKilled。一开始我们以为是java进程的内存泄漏,但深入分析发现问题出在内核的内存上。我们验证了查看文件/sys/fs/cgroup/memory/memory.kmem.usage_in_bytes我们将这种情况隔离为仅使用DD命令创建文件(不含java),如下所示:foriin{1..50000};doddif=/dev/urando