Linux系统编程基础知识

本篇主要介绍了Linux系统编程的基础概念,为后续深入打好基础,还有助于回顾操作系统的知识。

内核

    通常来说,操作系统的内核是整个os的核心所在,是指管理和分配计算机资源(CPU、RAM和设备)的核心软件层。

    内核的主要任务:

  • 进程调度:Linux属于抢占式多任务操作系统,多任务是指多个进程可以同时驻留在内存中,而且每个进程都可以获得CPU的使用权,抢占式是指运用进程调度算法来控制哪些进程能获得CPU的使用,以及每个进程能使用多长时间。
  • 内存管理:主要是指虚拟内存管理机制。
  • 提供文件系统:内核在磁盘上提供了文件系统。允许对文件进行创建、删除等操作。
  • 对设备的访问:内核可以为程序访问设备提供多个接口。
  • 创建和终止进程。
  • 提供系统调用应用编程接口

    现代处理器架构一般允许CPU在两种不同状态下允许,即用户态和核心态,与之对应,也可以将虚拟内存区域划分为用户空间部分和内核空间部分。

用户和组

    系统会对每个用户的身份做唯一标识,用户可隶属于多个组。每个用户拥有唯一的用户名和对应的用户ID,系统密码文件/etc/passwd为每个用户都有一行记录,处了包括用户名和UID之外,还有组ID,主目录,登陆shell。用户密码存于shadow文件中。

    组是出于管理的目的,尤其式为了对控制文件和其他资源的访问,将多个用户分组。

进程

    进程是正在执行的程序实例,进程是一个个实体,内核须在进程之间共享各种计算机资源。逻辑上将一个进程分成以下几个部分(也成为段)

  • 文本段:程序的指令
  • 数据段:程序使用的静态变量
  • 堆:程序可从该区域动态分配额外内存(new、delete)
  • 栈:随着函数调用、返回而增减的一片内存,用于为局部变量、和函数调用链接信息分配存储空间。

    每个进程都有一组与之相关的用户ID和组ID。

  • 真实用户ID和组ID:用来标识进程所属的用户和组,新进程从父进程中继承这些ID
  • 有效用户ID和组ID:进程在访问受保护资源时候,会使用这两个ID来确定访问权限,一般情况下,真实ID和有效ID相同。

    守护进程是指具有特殊用途的进程。典型的守护进程有syslogd(系统日志中记录消息)、httpd(利用HTTP分发页面)系统创建和处理此类进程的方式与其他进程相同,但是守护进程有以下独有特点:

  1. 守护进程通常在系统引导时启动,知道系统关闭前,一直都健在。
  2. 守护进程在后台运行,且无控制终端供其读取或写入数据。

系统调用和库函数

    系统调用是受控的内核接口,进程可以请求内核去执行相应的操作,需要注意的是:

  • 系统调用将树立起从用户态切换到核心态。
  • 系统调用的组成是固定的,每个系统调用都有一个唯一的数字标识。
  • 每个系统调用有一套参数,对用户空间与内核空间之间相互转换的信息加以规范。

    库函数则是标准C语言的构成函数。

 

参考 《LINUX/UNIX系统编程手册》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值