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

Linux系统编程Linux环境搭建

前言 本篇开始我们搭配着C++认识一个新“大陆”——Linux操作系统,这一篇我们先来了解一下Linux什么,以及Linux如何搭建环境 个人主页:小张同学zkf ⏩ 文章专栏:Linux...系统编程 若有问题 评论区见 欢迎大家点赞收藏⭐文章 1.Linux 背景介绍 说起Linux,我们必须先要提起UNIX UNIX 发展历史 1968 年,一些来自通用电器公司、贝尔实验室和麻省理工学院研究人员开发了一个名叫...国内如中标麒麟Linux、红旗 Linux、深度Linux系统软件厂商都推出Linux桌面操作系统,目前已经在政府、企业、 OEM等领域得 到了广泛应用。...但是,从系统整体功能、性能来看, Linux桌面系统与Windows系列相比还有一定 差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件丰富程度等方面。...企业已经使用Linux操作系统进行云 计算、大数据平台构建,目前, Linux已开始取代Unix成为最受青睐云计算、大数据平台操作系统

9510

linux内核编程_linux内核是什么

什么是操作系统? 指在系统中负责完成最基本功能和系统管理部分, 操作系统有哪些组成部分?...内核——操作系统内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类用户界面—-操作系统外在表象 基本文件管理工具和系统工具 Linux内核组成 Linux内核源代码目录结构是什么...进程调度处于系统中心位置,内核中其他系统都依赖它,因为每个子系统都需要挂起或恢复进程 进程如何在几个状态间切换? 在设备驱动编程中,当请求资源不能得到满足时会怎样?...Linux 每个进程享有4GB内存空间,0~3GB属于用户空间,3~4GB属于内核空间 虚拟文件系统什么作用?...LinuxC 编程 Linux中宏定义、变量名、函数名命名习惯是什么

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

    Linux编程系统僵尸们)

    下图给出Linux进程从被创建(生)到被回收(死)全部状态,以及这些状态发生转换时条件: ?...3,刚被创建进程都处于“就绪”状态,等待系统调度,内核中函数sched( )被称为调度器,他会根据各种参数来选择一个等待进程去占用CPU。...换句话说:进程跟人一样,从来都没有什么平等可言,有贵族就有屌丝,他们要处理事情有不同轻重缓急之分。...当进程所等待资源变得可获取时,又会被系统置为TASK_RUNNING状态重新就绪排队。...为什么一个进程死掉之后还要把尸体留下呢?因为进程在退出时候,将其退出信息都封存在他尸体里面了,比如如果他正常退出,那退出值是多少呢?如果被信号杀死?那么是哪个信号呢?

    1.3K20

    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系统中,符号被用于取”变量”值。

    11610

    linux系统编程(3)

    [3]信号 (2)System 5 IPC对象进程间通信方式   [1]消息队列   [2]共享内存   [3]信号灯集 (3)socket通信 (4)Android系统中增加...Binder进程间通信方式 Linux 支持以上所有进程间通信方式 三 管道进程间通信 (1)无名管道 特点: 只能用于具有亲缘关系进程间通信(具有亲缘关系进程具有数据拷贝动作...返回值: 成功返回0,失败返回-1 (2)管道读写规则  读端存在  ,写管道 ---->只要管道没有满,都可以写入数据到管道 读端不存在,写管道 ---->此时写管道没有意义,操作系统会发送...,返回值0 (3)有名管道 特点:可以用于任意进程间通信,它是一种特殊文件,在文件系统存在名字,      而文件中存放数据是在内核空间,而不是在磁盘上 1.创建一个有名管道文件...  子进程状态发生改变时候,操作系统向父进程发送SIGCHLD,默认对它处理方式是忽略 typedef  void (*sighandler_t)(int); sighandler_t signal

    1K20

    Linux系统进程编程(二)

    在上一篇文章中,我们已经对进程这个概念有了一个基本认识,今天我们来继续学习进程实战操作----父子进程对文件操作,以及什么是僵尸进程和孤儿进程?下面我们就开始来揭开它们神秘面纱!...(什么是接续写,简单理解就是对文件写操作完后,另外一个操作接着前面的那个操作继续往文件里面写东西)写。...哈哈哈,听到僵尸两个字是不是有点小害怕,言归正传,在Linux系统中,我们要明白:进程在运行时是需要消耗系统资源(内存、IO),进程终止时理应完全释放这些资源(如果进程消亡后仍然没有释放相应资源则这些资源就丢失了...),所以linux系统设计时规定:每一个进程退出时,操作系统会自动回收这个进程涉及到所有的资源(譬如malloc申请内容没有free时,当前进程结束时这个内存会被释放,譬如open打开文件没有close...同时,linux系统规定:所有的孤儿进程都自动成为一个特殊进程(进程1,也就是init进程)子进程。

    1.7K10

    Linux系统编程Linux背景知识

    这是操作系统根本要义!! Linux操作系统是一个免费且开源操作系统,它基于Unix操作系统。...操作系统可以分为不同类型,常见操作系统包括Windows、macOS、Linux等。 2.Linux发展史 在这里简要介绍Linux发展史。要说Linux,还得从UNIX开始介绍。...此外,Linux还应用于嵌入式系统、超级计算机、云计算等领域,展示了其广泛适用性和灵活性。 目前,Linux已经成为全球最流行操作系统之一。...但是,从系统整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件丰富程度等方面。...企业已经使用Linux操作系统进行云计算、大数据平台构建,目前,Linux已开始取代Unix成为最受青睐云计算、大数据平台操作系统

    14710

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

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

    3.1K30

    【高级编程Linux read系统调用

    什么系统调用 首先系统调用能做那些事呢?概括来说,大概有下面这些事需要系统调用来实现。 控制硬件:系统调用往往作为硬件资源和用户空间抽象接口,比如读写文件时用到write/read调用。...比如 fork、clone、execve、exit等 那为什么一定要用系统调用来访问操作系统内容呢,其实这可以看做对内核保护,linux分为用户空间和内核空间,而用户空间是不允许访问内核空间数据...引入 cache 层目的是为了提高 linux 操作系统对磁盘访问性能。 Cache 层在内存中缓存了磁盘上部分数据。...缓存目标是任何基于页对象,这包含各种类型文件和各种类型内存映射。为了满足普遍性要求,linux使用定义在linux/fs.h中结构体address_space结构体描述页高速缓存中页面。...->readpage 所指向函数(变量 mapping 为 inode 对象中 address_space 对象),那么这个函数到底是什么呢?

    6.1K110

    Linux系统编程】进程状态

    所以进程在运行时候是可以被操作系统管理和调度: 那这样的话就涉及一个问题,就是在某个时刻操作系统什么调度这个进程,让这个进程在CPU上运行而不是其它进程呢?...因为这两个状态是操作系统中进程比较核心两个状态,当然还有一个运行状态它相对比较好理解,我们后面针对具体Linux操作系统去讲解。...而我们上面了解内容其实就是基于操作系统这门课程来说,可以认为它对于所有具体操作系统都是成立,可能比较抽象。 而我们下面呢,要针对一款具体操作系统——Linux来学习一下进程状态。...那再回到我们上面: 我们创建进程帮我们做事有时候是关心结果,那如何获取这个结果呢?...所以,为了方便子进程退出后父进程或操作系统获取该进程退出结果,Linux进程退出时,进程一般不会立即死亡,而是要维持一个Z状态即——僵尸状态。 等这个进程真正被回收了,它状态就会变成X死亡状态。

    21110

    Linux系统下进程编程(一)

    ,记得刚开始学编程时候,那时候就是从这里开始萌芽。那么写了这么多函数,为啥要从这里开始“进门”呢,个人理解就是一种规定。...main()函数: 然而在我们Linux系统里面编程,它也是要准备一些前期工作:它要有编译链接时引导代码-------操作系统应用程序其实在main执行前也需要先执行一段引导代码才能去执行main...1、前面的索引,都是为了现在来讲什么是进程?进程是一个独立可调度任务,进程是一个抽象实体。...当系统在执行某个程序时,分配和释放各种资源,进程是一个程序一次执行过程(通俗,进程就是程序一次运行过程,一个静态可执行程序a.out一次运行过程(....它一般在Linux启动时开始执行,系统关闭时才结束。

    2.5K10

    Linux系统编程fork详解

    如果返回pid_t等于0的话表示当前进程是子进程,如果返回pid_t是大于0数说明当前进程是父进程,如果返回-1说明出错并设置errno。...其中父进程id为3912,子进程id为3913,其中父进程父进程应该为终端进程,id为2149。  ...最开始linux创建子进程实现方法是在子进程创建时就直接将父进程所有内容复制到子进程中,但是这一操作会造成不必要资源和时间消耗。所以就有了读时共享,写时复制机制。...系统会为子进程创建其自己4G虚拟内存,而虚拟内存又分为内核内存和用户内存,大小比为1:3。子进程虚拟地址映射了父进程虚拟地址所指向物理内存,所以父子进程实际上共享了同一块物理内存。...那么对于父子进程来说它们应该是两个独立进程,所以当父子进程对物理内存进行读操作时,二者是共享,但是如果父或子进程要进行写操作时候,此时父进程才会将要操作内容复制给子进程。

    2.3K30

    Linux系统编程】操作系统概念、定位 及系统调用

    那同样,在计算机里面,光有那些硬件也是不行什么情况下把什么数据预加载到什么位置,内存空间不够了怎么办,输出结果要保存到文件,应该放到什么位置…等等这些问题都不是你硬件能解决。...那软件的话通过上一篇文章学习我们知道软件想要运行的话就要先加载到内存里,那其实我们计算机开机时候就是在加载操作系统。 那操作系统是一款什么软件呢?...比如校长告诉辅导员,让他下周一举办一个编程大赛,然后辅导员去落实,去准备,最后我们学生去执行。...,那校长其实就对应计算机中操作系统,学生就对应计算机中软硬件,而辅导员则对应硬件驱动。 3. 操作系统什么要做管理 那操作系统什么要对软硬件资源进行管理呢?...比如有些操作系统上有人就基于系统调用接口写了图形化界面,有的操作系统设计者就基于系统调用接口写了shell和工具集,还有比如C语言里面的一些库函数或者Linux一些命令,我们可以直接使用,但他底层可能就是去调用对应系统调用去完成对应操作

    15810

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

    那在之前呢先给大家再补充一点东西: 我们在上一篇文章中有提到一个叫做家目录概念,那我们登录上自己机器时候,其实默认就是处在自己家目录下。...总结一下: mv命令是move缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用命令,经常用来备份文件或者目录。...为什么会这样呢? echo "aaa bbb c" > tmp.txt中>这个符号可以实现输出重定向。 什么意思呢? 其实就可以理解为重新确定了输出方向。...也就是说,cat如果后面不跟文件的话,它默认是从键盘去读取数据,我们敲什么,它就读取什么然后并显示出来。...补充说明:uname可显示linux主机所用操作系统版本、硬件名称等基本信息。

    17510

    Linux系统编程Linux编辑器——vim

    从这篇文章开始,我们要来学习一些Linux开发工具。 这篇文章,我们先来学习一下Linux文本编辑器——vim。 1....什么是vim 首先我们来认识一下什么是vim Vim(Vi IMproved)是一款文本编辑器,它是从 Vi 编辑器发展而来。...我们这里主要讲解vim3种模式: 正常/普通/命令模式(Normal mode) 插入模式(Insert mode) 末行/底行模式(last line mode) 除此之外还有一个替换模式和视图模式我们时候也会提一下...但是我输了自己密码还是用不了。 那这是怎么回事呢? 我当前这个用户之所以用不了sudo,是因为我并不在系统信任列表里面。...sudo 目的是确保系统安全性,避免普通用户在没有适当权限情况下执行危险或敏感操作。只有经过授权用户才可以使用 sudo,并且需要提供自己密码来进行身份验证。

    31710

    Linux系统开发: 学习Linux下网络编程

    什么有大小端: 在计算机系统中,我们是以字节为单位,每个地址单元都对应着一个字节,一个字节为 8bit。...shutdown(tcp_client_fd,SHUT_WR); //TCP半关闭,保证缓冲区内数据全部写完 直接强制关闭连接示例: int close(int fd); 1.9 查看Linux系统当前网络连接...在/proc/net/tcp目录下面保存了当前系统所有TCP链接状态信息。...信号 3.8 获取网络底层缓冲区发送剩余字节数 在网络编程时,发送方调用write(fd)将报文发送时候实际上只是写入了内核write buffer。...接收方什么时候能收到报文是个未知数。 在某些需要同步状态机地方,发送方最好能够确认接收方收到报文后再进行下一步动作。

    3.5K21

    Linux系统编程】shell感性理解

    1. shell是什么?它有什么作用? Linux严格意义上说是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。...shell 对于Linux,有相同作用,主要是对我们指令进行解析,解析指令给Linux内核。反馈结果再通过内核运行出结果,通过shell解析给用户。...下面我们一个故事,来帮助大家更好理解 2....波澜渐起(正常命令处理) 第二天,王婆就如约来到小帅家,问小帅,你对你另一半有什么要求吗? 小帅告诉王婆说,没什么要求,我就喜欢隔壁的如花,您帮我说一说。...故事角色与处理过程中各部分映射 那通过上面的故事,相信大家已经有了一点理解了: 那故事中小帅,其实就是对应用户,王婆就对应shell,如花就对应操作系统。 为什么小帅不直接找如花呢?

    11810

    Linux】掌握Linux系统编程权限与访问控制

    1.Linux权限概念 ✨Linux下有两种用户:超级用户(root)、普通用户。...超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限事情 超级用户命令提示符是“#”,普通用户命令提示符是“$”。...要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户口令 这里可以从root超级用户切换到普通用户: su tutu //tutu...:普通用户名字 因为root用户可以再linux系统下做任何事情,不受限制,所以从它切换到普通用户不用输入密码,而当普通用户切换到超级用户时则需要输入超级用户密码; ☑️如何创建一个普通用户?...每个文件和目录都有一个所有者和一个所属组,而且还可以赋予其他用户访问权限。Linux权限控制了文件和目录读、写和执行权限,通过设置不同权限组合可以限制用户对文件和目录访问。

    15910

    Linux系统编程Linux调试器——gdb 基本使用

    这篇文章我们继续学习Linux开发工具。 经过之前学习,我们已经能够在Linux上编写代码、运行代码和通过git管理代码了。...但是如何在Linux上调式代码我们还不知道,所以今天要学Linux调试器——gdb 基本使用。 1. 准备工作及知识补充 那要使用调式器调式,首先我们得有代码,有可执行程序。...如果大家平时写C/C++代码用是vs的话,应该会注意到,在vs上生成程序时候就有两种模式 debug和release了解 两者有什么区别呢?...那在Linux上gcc/g++编译生成可执行程序其实默认是release版本,不包含调式信息,所以我们无法调式! 如何解决 那如何让它以debug版本生成呢?...那在gdb中与之对应操作是什么呢? 首先逐过程: 开始调式,到16行断点就停止了,对应是一个函数调用。 如果我想逐过程,直接走到下一句代码呢?

    45110
    领券