首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux内核编程_linux内核是什么

内核——操作系统的内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类的用户界面—-操作系统的外在表象 基本的文件管理工具和系统工具 Linux内核的组成 Linux内核源代码目录结构是什么...进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为每个子系统都需要挂起或恢复进程 进程如何在几个状态间切换? 在设备驱动编程中,当请求的资源不能得到满足时会怎样?...内存管理的主要作用是什么? 控制多个进程安全地共享主内存区域。当CPU提供内存管理单元(MMU)时,Linux 内存管理完成为每个进程进行虚拟内存到物理内存的转换。 进程的地址空间时怎样划分的?...只能通过系统调用和硬件中断完成 Linux内核的编译及加载 内核的配置系统由哪既部分组成? Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则。...Linux下的C 编程 Linux中宏定义、变量名、函数名命名习惯是什么?

18.9K31

Linux系统编程基础

Linux不是一个具体的操作系统,而是一类操作系统的总称,具体版本成为发行版。...Red Hat:目前被IBM收购,收费版,目前最大的Linux供应商 CentOS: Red Hat退出的免费版 Ubuntu:界面比较友好 虚拟机 学习Linux系统,就需要有一个可用的Linux系统...我们也不能将自己系统换成Linux系统,因为Linux系统并不适合日常办公使用,所以我们需要借助虚拟机来获得可用的Linux系统环境进行学习。 什么是虚拟机?...无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式: 如:ls -l /home/demo 意思是以列表的形式,显示/home/demo目录内的内容 ls命令 当ls不使用参数,表示列出:...无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。 在Linux系统中,符号被用于取”变量”的值。

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

    Linux系统进程编程(二)

    哈哈哈,听到僵尸两个字是不是有点小害怕,言归正传,在Linux系统中,我们要明白:进程在运行时是需要消耗系统资源(内存、IO),进程终止时理应完全释放这些资源(如果进程消亡后仍然没有释放相应资源则这些资源就丢失了...),所以linux系统设计时规定:每一个进程退出时,操作系统会自动回收这个进程涉及到的所有的资源(譬如malloc申请的内容没有free时,当前进程结束时这个内存会被释放,譬如open打开的文件没有close...但是操作系统只是回收了这个进程工作时消耗的内存和IO,而并没有回收这个进程本身占用的内存(8KB,主要是task_struct和栈内存),因为进程本身的8KB内存操作系统不能回收需要别人来辅助回收,因此我们每个进程都需要一个帮助它收尸的人...同时,linux系统规定:所有的孤儿进程都自动成为一个特殊进程(进程1,也就是init进程)的子进程。...\n", getpid()); return 0; } 输出结果: 说明:这里父进程先运行死掉了,但是我们后面并没有发现特殊进程init为1,而是908,这其实是跟ubuntu系统有关系的,真实是为

    1.8K10

    【Linux系统编程】Linux背景知识

    目录 前言 1.操作系统(os) 2.Linux发展史 2.1UNIX发展史 2.2Linux发展史 3.Linux开源 4.Linux官网 5.企业应用现状 6.Linux发行版本 7.结语 1.操作系统...这是操作系统的根本要义!! Linux操作系统是一个免费且开源的操作系统,它基于Unix操作系统。...操作系统可以分为不同的类型,常见的操作系统包括Windows、macOS、Linux等。 2.Linux发展史 在这里简要介绍Linux的发展史。要说Linux,还得从UNIX开始介绍。...严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。...国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。

    16510

    linux系统编程(3)

    [3]信号 (2)System 5 IPC对象进程间通信方式   [1]消息队列   [2]共享内存   [3]信号灯集 (3)socket通信 (4)Android系统中增加...Binder进程间通信方式 Linux 支持以上所有进程间通信方式 三 管道进程间通信 (1)无名管道 特点: 只能用于具有亲缘关系进程间通信(具有亲缘关系的进程具有数据拷贝动作...返回值: 成功返回0,失败返回-1 (2)管道读写规则  读端存在  ,写管道 ---->只要管道没有满,都可以写入数据到管道 读端不存在,写管道 ---->此时写管道没有意义,操作系统会发送...管道中没有数据,读阻塞 写端不存在,读管道 ---->此时管道中读取数据,管道中没有数据,此时不阻塞,立即返回,返回值0 (3)有名管道 特点:可以用于任意进程间通信,它是一种特殊的文件,在文件系统存在名字...SIGSTOP 不能忽略 捕捉   当进程收到信号,此时执行的信号处理函数  默认   大部分信号对进程的默认操作方式都是杀死进程   子进程状态发生改变的时候,操作系统向父进程发送

    1K20

    【Linux系统编程】Linux环境的搭建

    前言 本篇开始我们搭配着C++认识一个新的“大陆”——Linux操作系统,这一篇我们先来了解一下Linux是什么,以及Linux如何搭建环境 个人主页:小张同学zkf ⏩ 文章专栏:Linux...系统编程 若有问题 评论区见 欢迎大家点赞收藏⭐文章 1.Linux 背景介绍 说起Linux,我们必须先要提起UNIX UNIX 发展的历史 1968 年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫...,就成为了Linux操作系统。...严格来讲, Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。...国内如中标麒麟Linux、红旗 Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、 OEM等领域得 到了广泛应用。

    10810

    【Linux系统编程】二、Linux进程概念

    书上称之为 PCB(process control block),而 Linux 操作系统下的 PCB 是: task_struct ​ 我们现在思考一个问题,我们写的程序是放在磁盘中的,当我们想要运行它的时候...在 Linux 中描述进程的结构体叫做 task_struct。 task_struct 是 Linux 内核的一种数据结构,它会被装载到 RAM(内存) 里并且包含着进程的信息。...这个不需要管~ 那进程前面这些属性是什么呢?...2、通过访问 /proc 系统文件夹查看 ​ /proc 是 Linux 下专门用来存放进程的文件夹! ​ 其中这些数字文件夹,其实就是以 PID 为名称的进程! ​...被父子进程共享,数据各自开辟空间,私有一份(采用写时拷贝)~ fork() 之后,父子进程会执行后续代码,但是执行的先后次序这个是无法预料的~ 通过 fork() 的返回值 与 if语句分流,我们可以实现多进程编程

    2200

    Linux系统编程:基本IO系统调用

    文件描述符 表示 宏 0 标准输入(stdin) STDIN_FILENO 1 标准输出(stdout) STDOUT_FINENO 2 标准错误(stderr) STDERR_FILENO 遵循Linux...open()系统调用 对文件进行读写之前,必须先打开文件。Linux提供了系统调用open()。...read()系统调用 文件打开后,就能够读文件了。read()是最基础、最常见的读取文件的机制。...系统调用write()时,数据从用户空间的缓冲区中拷贝到了内核空间的缓冲区,但并没有立即把数据写入磁盘中,这称为延迟写。延迟写的问题在于,如果在数据真正写入磁盘之前系统崩溃了,则数据可能丢失。...Linux系统也支持强制文件立即写入磁盘上,这在后面介绍。 close()系统调用 程序完成文件的读写后,调用close函数关闭文件描述符与文件之间的连接,使得文件描述符可以被重用。

    3.1K30

    【高级编程】Linux read系统调用

    比如 fork、clone、execve、exit等 那为什么一定要用系统调用来访问操作系统的内容呢,其实这可以看做对内核的保护,linux分为用户空间和内核空间,而用户空间是不允许访问内核空间的数据的...引入 cache 层的目的是为了提高 linux 操作系统对磁盘访问的性能。 Cache 层在内存中缓存了磁盘上的部分数据。...文件的page cache结构 在 Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再将数据分发给应用程序;当需要往文件 中写数据时...为了满足普遍性要求,linux使用定义在linux/fs.h中的结构体address_space结构体描述页高速缓存中的页面。...当页上的数据不是最新的时候,该函数调用 mapping->a_ops->readpage 所指向的函数(变量 mapping 为 inode 对象中的 address_space 对象),那么这个函数到底是什么呢

    6.2K110

    Linux系统下进程编程(一)

    ,记得刚开始学编程的时候,那时候就是从这里开始萌芽的。那么写了这么多函数,为啥要从这里开始“进门”呢,个人理解就是一种规定。...系统里面编程,它也是要准备一些前期工作的:它要有编译链接时的引导代码-------操作系统下的应用程序其实在main执行前也需要先执行一段引导代码才能去执行main,我们写应用程序时不用考虑引导代码的问题...另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行脚本文件。)来运行)加载器负责将这个程序加载到内存中去执行这个程序。...在我们Linux系统有一些函数可以获得进程号:getpid(获得当前进程的ID)、getppid(获得父进程ID)、getuid(获取当前进程的用户ID,比如root用户或是普通用户)、geteuid(...它一般在Linux启动时开始执行,系统关闭时才结束。

    2.5K10

    【Linux系统编程】进程状态

    前言 在前面的学习中,我们已经学习了进程的概念和基本创建,以及如何通过相关的系统调用创建进程和获取进程标识符。 那为了弄明白正在运行的进程是什么意思,我们需要了解进程的不同状态 1....首先这里等待的资源可能是什么呢? 比如:磁盘、网卡、显卡各种外设等。...因为这两个状态是操作系统中进程比较核心的两个状态,当然还有一个运行状态它相对比较好理解,我们后面针对具体的Linux操作系统去讲解。...而我们上面了解的内容其实就是基于操作系统这门课程来说的,可以认为它对于所有具体的操作系统都是成立的,可能比较抽象。 而我们下面呢,要针对一款具体的操作系统——Linux来学习一下进程的状态。...所以,为了方便子进程退出后父进程或操作系统获取该进程的退出结果,Linux进程退出时,进程一般不会立即死亡,而是要维持一个Z状态即——僵尸状态。 等这个进程真正被回收了,它的状态就会变成X死亡状态。

    22310

    初识Linux · 系统编程done

    前言: 本文作为Linux系统编程的收尾工作,介绍的是些零碎的概念,比如死锁,可重入函数,自旋锁,读写锁等,其中死锁概念要重要些,对于自旋锁,读写锁来说都没有那么重要,所以咱们了解一下即可。...但需要注意的是,并不是所有的资源都可以改造成可共享使用的资源,并且为了系统安全,很多地方还必须保护这种互斥性。因此,很多时候都无法破坏互斥条件。...但这种方法可能导致前一阶段工作的失效,并且反复地申请和释放资源会增加系统开销,降低系统吞吐量。...NULL); pthread_join(t3, NULL); pthread_join(t4, NULL); //pthread_spin_destroy(&lock); } 以上,或者说初识Linux...系统编程的文章就更新完了,大部分文章介绍的不是那么清楚的,博主会重制Linux系统编程的,算是对博主自己的一个交代啦,敬请期待!!

    4600

    【Linux系统编程】Linux基本指令详解(二)

    那如果如果我这样呢: 当前目录下只有一个add.c文件,上级目录有一个名为dd的目录,那现在我写这样一句指令: 大家看这句指令是什么意思?...总结一下: mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。...那我们上面还学了cat,可以显示文件内容 那现在有这么一条指令,也可以统计出行数 那条指令是什么意思呢?这里的|又是啥?...即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。...补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

    18110

    【Linux系统编程】基础指令(三)

    2.date指令 用法: date [选项] [+格式] 功能: date指令是在Linux和Unix系统中用于显示和设置系统日期和时间的命令。...它可以显示当前的日期和时间,也可以用于设置系统的日期和时间。 例如: 以下是一些常见的date指令用法示例: ✨1. 显示当前日期和时间: date 结果如下: ✨2....设置系统日期和时间(需要root权限): date -s "" date -s //设置当前时间,只有root权限才能设置,其他只能查看。...3.cal指令 语法: cal [选项][月份][年份] 功能: cal指令是在Linux和Unix操作系统中用于显示指定月份的日历的命令。...基础指令,加上之前的Linux基础指令一和Linux基础指令二,常见的Linux基础指令更新就到这里啦~以上就是今天的所有内容啦 ~ 完结撒花 ~

    10110

    Linux编程(系统里的僵尸们)

    下图给出Linux进程从被创建(生)到被回收(死)的全部状态,以及这些状态发生转换时的条件: ?...3,刚被创建的进程都处于“就绪”状态,等待系统调度,内核中的函数sched( )被称为调度器,他会根据各种参数来选择一个等待的进程去占用CPU。...时间片耗光的情况下如果进程还没有结束,那么会被系统重新放入等待队列中等待。另外,正处于“执行态”的进程即使时间片没有耗光,也可能被别的更高优先级的进程“抢占”CPU,被迫重新回到等到队列中等待。...当进程所等待的资源变得可获取时,又会被系统置为TASK_RUNNING状态重新就绪排队。...5,当进程收到SIGSTOP或者SIGTSTP中的其中一个信号时,状态会被置为TASK_STOPPED,此时被称为“暂停态”,该状态下的进程不再参与调度,但系统资源不释放,直到收到SIGCONT信号后被重新置为就绪态

    1.3K20

    【Linux系统编程】六、进程终止

    那肯定不用说,因为是系统调用的 main 函数,那肯定是返回给系统(系统如何调用的我们后面会讲),以此来判断进程执行后的结果! ​ 这里又要引入一个新的环境变量: ?...接下来我们在命令行故意写错指令,看看报的是什么错误: Ⅱ....调用用户级别函数 exit() 调用系统级别函数 _exit() 对于后两个方法,我们在下面会详细的讲! 二、异常退出 ​ 比如 ctrl + c,进程通过接收到信号而终止!...255 ② exit() 与 _exit() 的区别 ​ _exit() 是系统提供的接口,它的原型同库里的 exit 函数,函数的声明如下: #include void _exit...(int status); ​ 其实本质上因为 _exit() 是系统级别的接口,所以 exit() 其实就是去调用的 _exit(),只不过要多做了一些工作,所以会有一些细节上面的差别,比如说下面这些工作

    12710
    领券