学习
实践
活动
专区
工具
TVP
写文章

写一个操作系统_08 内核C语言

内核C语言 写内核能用C标准库吗? 我们开发用户应用程序的时候,有标准库可以用,最典型的就是GUN C库,标准库一般是系统调用的封装,表面上是通过标准库访问系统资源,实际上是通过系统调用实现的。 所以自己写内核的话可以用C语言,毕竟可以编译成汇编,跟直接写汇编差不多,但是不能用C标准库,理由如上。 ,可以理解为操作系统无关的部分的汇编封装。 m32b.o -Ttext 0xc0001500 -e main -o m32.bin # 指定开始的地址 ELF文件 ELF是Linux上的可执行文件,其中Entry point address相当于操作系统文件的约定 ,操作系统加载这个可执行文件的时候,去这个地方作为入口点。

44520
  • 广告
    关闭

    2023新春采购节

    领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折

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

    用 C 语言实现操作系统

    本文选自 | 《操作系统基础:C 语言实现用户线程》 Chat 作者 | Allen() 整理 | linse 码农都懂的一句话:C 语言无所不能,什么都能搞。 把 C 学好,上手其他语言也会事半功倍。因为热爱 C 语言,所以才有了以下这篇文—— 一直以来,我们学习线程切换调度,都是通过阅读操作系统书籍或 Linux 源码甚至反汇编 Window 内核代码。 本文会带你循序渐近的掌握以下知识点: 控制流切换原理 上下文切换 线程设计 调度函数的封装代码模块化 线程的主动切换 时间片轮转调度 本文实验环境: ubuntu 16.04 32 位操作系统(读者请务必提前安装好 1.1 指令执行 不管你用的是什么语言编程,最后都要落实到 CPU 上,而 CPU 只认识它自己的语言,机器语言。机器语言可以抽象出对应 CPU 架构的汇编指令。 ,在此基础上,还可以探索更多有关线程的东西,比如线程的同步互斥,还有更多的线程状态。

    1.2K30

    操作系统 并发同步

    为了合理使用计算机系系统中的资源,在操作系统中采用的进程同步机制应遵循以下几条: 空闲则入:任何同步机制都必须保证任何时间嗯最多只有一个进程位于临界区。 用管程解决生产者-消费则问题 Pthread中的互斥同步 Pthread提供了可用于线程同步互斥的机制,他们是互斥量和条件变量,两者结合起来使用已达到管程的效果。 操作系统一般只提供要共享的内存空间,而处理进程间在公共内存中的互斥关系则是程序开发人员的责任。 消息机制 消息机制是用于进程间同行的高级通信原语之一。 管道通信 管道通信首先出现在UNIX操作系统中。 管道:就是连接在两个进程之间的一个打开的共享文件,专用于进程之间进行数据通信。 在对管道文件进行读写操作的过程中,发送进程和接收进程都要实施正确的同步和互斥,以确保通信的正确性,管道通信机制中的同步互斥都由操作系统自动进行,对用户是透明的。

    53410

    电脑语言区域-“区域和语言”影响Windows系统稳定_操作系统

    “的时间和语言设置居然这么重要?”MM小声嘀咕。哈哈,千万不要小看了这两个选项电脑语言区域,在中,看准时间,搞清地点可是相当重要的。    区域和语言   在 XP中,区域和语言选项是一个非常重要的组件,它增强了系统在多种语言环境中的应用能力。 在第一个选项卡“区域选项”中,我们能够看到“标准和格式”,下面的下拉菜单中有不同国家和地区的语言。选择不同地区的语言就会改变日期、货币、数字和时间的显示方式。    依次打开“控制面板→区域和语言选项→高级→非程序的语言”电脑语言区域,在下拉菜单选择“中文(香港特别行政区)”就可正确运行繁体中文版游戏程序。不需要像那样安装内码转换程序。    如果你的电脑已经联网,那么建议你在“时间”中将“自动时间服务器同步”勾选,这样系统就会自动从网上核对当前时间,不需要你去费心调节了。

    10920

    曾是最流行的语言之一,Visual Basic 28年兴衰记

    28 年过去了,我们终于要目睹世界上最流行的语言之一,Visual Basic ,开始衰落了吗? 坦白说,我对 Visual Basic 的迷恋是这样开始的:当我还是个十几岁的孩童时,我就学会了使用 BASIC 语言编程,但不仅仅是任何 BASIC 语言。 我是从 Microsoft 那个古董级的 DOS 操作系统上开创性的 QuickBASIC 环境开始的。至今我仍然记得在蓝色背景下用白色文本来编写代码的场景。 ? 正如 VB 获得了 C# 相同的功能一样,C# 也获得了 Visual Basic 相同的便利。 Visual Basic 本应在教育市场有一个天然的契合点。但即便如此,它仍然是个“败家子”,像 C# 和 Python 这样的现代语言现在已经足够简单、安全,完全可以作为他们的第一门语言来学习。

    89520

    操作系统:分段分页内存

    操作系统是如何让不同的应用程序能够既安全又高效地共同使用物理内存的? 现代操作系统的普遍做法是引入“虚拟内存”的机制,应用程序是面向虚拟内存编写的而不是面向物理内存。 分段分页机制 分段机制 应用程序的虚拟地址空间由若干个大小不同的段构成,当CPU要访问某个段时,MMU会去查询段表,得到该段对应的内存区域。 具体来说,虚拟地址由两部分构成:段号和段内偏移。 TLB刷新 TLB刷新是为了保证TLB中的内容当前页表中的一致。 操作系统可以为不同的应用程序分配不同的ASID作为其身份标签。 ASID最多有16位(位数由TCR_EL1寄存器中的信息决定) 参考资料 《现代操作系统:原理实现》陈海波 夏虞斌等著 转载请注明来源:https://www.longjin666.top/?

    19130

    静态语言动态语言

    奥义: 动态语言(弱类型语言): 在运行时,才确定数据类型,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。 静态语言(强类型语言): 在编译时,变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须声明数据类型。如Java、C、C++、C#... 运行时,结构不可变的语言。 Java是静态语言,但是Java也可以称为“准动态语言”。因为在Java具有一定的动态性,我们可以通过反射机制、字节码操作获得类似动态语言的特性。 补充: 弱类型语言是数据类型可以被忽略的语言。 它与强类型语言相反,一个变量可以赋不同数据类型的值。一个变量的类型是由其上下文决定的,效率更高。 强类型语言是必须强制确定数据类型的语言,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这种数据类型。一个变量的类型是申明的时候就已经确定的,更安全。

    95450

    操作系统内核都是用C语言写的?

    1.从语言特点来说 ①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。 ②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和 C语言 汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。 所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。 ③C语言具有很高的运行效率。 2.嵌入式开发中的地位——开发工具 3.高级语言中的低级语言:面向过程VS面向对象 面向过程: “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。 最后,C语言也有他自身的缺陷,比如代码的复用性差,代码的维护性差,扩展性(新增代码时不改变原来的代码)很差。

    4012219

    操作系统内核都是用C语言写的?

    1.从语言特点来说 ①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。 ②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和 C语言 汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。 所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。 ③C语言具有很高的运行效率。 2.嵌入式开发中的地位——开发工具 3.高级语言中的低级语言:面向过程VS面向对象 ? 最后,C语言也有他自身的缺陷,比如代码的复用性差,代码的维护性差,扩展性(新增代码时不改变原来的代码)很差。

    4833129

    TIOBE 2016年4月编程语言排行榜:Visual Basic即将出局

    摘要: Visual Basic语言一度依靠微软而风生水起,但到了现在,除了经典VB在继续衰落之外,VB.NET的十强坐席也将不保。这意味着从TIOBE开榜依赖,BASIC语言首次掉出十强。 很久以前,只有几个主流的编程语言瓜分天下,它们分别是:COBOL、BASIC和FORTRAN。很多软件系统都是用这几种语言编写的,而且令人惊讶的是,其中很多系统生存至今。 VB(Visual Basic语言是由微软开发创建的,最经典的版本是VB6,也称“经典VB”,这个版本极为成功。 不过,由于VB.NET经典VB实际上属于两种完全不同的语言,结果导致一方面VB社区无所适从,另一方面也不利于VB.NET的流行。 年度编程语言(2003-2015) ? 必须声明这个榜单本身采集的是英文世界的数据,虽然在反映趋势上有一些参考意义,但中国的实际情况不完全符合,而且,这张采样本身也有相当大的局限性。

    59860

    操作系统内存分区分页--11

    操作系统内存分区分页--11 引言 内存分区 固定分区 可变分区 可变分区的管理过程 — 核心数据结构 可变分区的管理—请求分配 可变分区的管理—释放内存 可变分区的管理—再次申请 引入分页: 解决内存分区导致 ---- 固定分区 可变分区 给你一个面包,一堆孩子来吃,怎么办? 等分,操作系统初始化时将内存等分成k个分区 但孩子有大有小,段也有大有小,需求不一定 显然,固定分区不符合现实要求,因此需要采用可变分区 ---- 可变分区的管理过程 — 核心数据结构 为了实现可变分区 ---- 可变分区的管理—请求分配 当操作系统接收到一个段内存请求时,例如: 某个数据段需要100k的内存大小,怎么分配?

    21130

    编程语言「考古」:曾经影响一代人的BASIC,原来还有前身

    这种语言早期家庭计算的平等主义世界观非常契合:如果你会打字,你就可以用计算机;如果你会用计算机,你就可以编程。 当然,BASIC 也不是哪个人拍脑袋想出来的。和其他语言一样,它也有完整的谱系和根源。 这个问题的最终解是 BASIC早期的其他语言不同,BASIC 是专为「科学家」、「程序员」以外的人设计的。在这门语言中,不必要的结构被删除,数据被简化,语法被简化至最低限度。 最后,BASIC 被打造成一门非常容易学习的大众语言同时期的其他语言相比,BASIC 极其简单。 变量是所有编程语言的基本要素,是存储和操作数据的载体,也是 DOPE BASIC 一脉相承的另一个体现。DOPE 有一种非常特殊的类型系统。它几乎是隐式的,但只是轻微地。 Kemeny 说得对,这门语言太简单了,循环就是一个完美的例子。在 DOPE 打交道的过程中,循环一直是我的眼中钉。在解释器方面,这意味着你需要额外的代码。

    24620

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 自然语言处理

      自然语言处理

      腾讯云自然语言处理(NLP)深度整合了腾讯内部顶级的 NLP 技术,依托千亿级中文语料累积,提供16项智能文本处理能力,包括智能分词、实体识别、文本纠错、情感分析、文本分类、词向量、关键词提取、自动摘要、智能闲聊、百科知识图谱查询等,满足各行各业的文本智能需求。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券