环境变量、进程相关概念

ulimit -a :查看linux下的资源上限设置  linux下栈大小8K

注:在Linux系统编程中,学函数先看man文档

一、进程相关的概念     cpu是ns级别
1、进程和程序
        程序:是指编译好的二进制文件,存储在磁盘上,不占用系统资源(cpu等)
        进程:是一个抽象概念,与操作系统原理相联系,占用系统资源

2、并发:OS中,同一时间段内,多个程序同时运行,但任一时间点只有一个程序运行
3、单道程序设计模型:CPU执行任务是排队执行,如microsoft的Dos
      多道程序设计模型:多个任务看似同时进行,但同一时间只运行一个任务

CPU时间划分成时间片,利用时间中断,每个程序执行固定的时间片,各任务轮循执行

程序运行时,在Linux中会为程序分配4G的虚拟内存
4、MMU(内存管理单元)位于CPU内部:完成地址映射,MMU按照物理页(page 4K)为单位进行地址分配
cpu和mmu

作用:1、协助进行虚拟地址和物理地址的转换
      2、设置内存的访问级别(设置CPU在访问内存时的访问级别) 级分4级


5、进程控制块(PCB):又名进程描述符,位于内核空间,在内核中以结构体形式存储

 本质:结构体,内部存储有:

 ···········1)进程ID: 系统中唯一的ID —— C语言用pid_t表示
            2)进程状态:初始化、就绪、运行、挂起、终止态
            3)进程切换时需要保存和恢复的一些CPU寄存器值(保存进程运行的信息)
            4)描述虚拟地址的信息
            5)描述控制终端的信息
            6)记录程序当前工作目录
            7)umask掩码,保护文件创建的权限
            8)文件描述符表(各个文件描述符数组形式存储)
            9)和信号相关的信息
            10)用户id和组id
            11)会话(session)和进程组
            12)进程可以使用的资源上限

二、环境变量: 是指在操作系统中用来指定操作系统运行环境的一些参数(描述环境信息)

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

环境变量的特征:
            1、本质:字符串
            2、有统一的格式 名=值

 加载的位置:与命令行参数类似, 位于用户区,高于stack的起始位置


 引入环境变量表:需声明环境变量  extern char **environ
 存储形式:与命令行参数类似。char *[]数组,数组名environ,内部存储字符串,NULL作为哨兵结束符

常用环境变量/作用 echo $SHELL
        PATH:记录可执行文件的搜索路径,各个路径按:分隔
        SHELL: 记录当前所使用的命令解释器
        HOME:当前用户的家目录
        LANG:当前使用的语言

1、 打印所有的环境变量:

#include <stdio.h>
extern char **environ;  //声明环境变量
int main(void)
{
    int i = 0;
    for(i = 0; environ[i] != NULL; i++)
    {
        printf("%s\n", environ[i]);
    }
        
    return 0;
}

2、环境变量处理函数:——<stdlib.h>
      1)  getenv函数    char *getenv(const char *name); 获得环境变量
      2) setenv函数:改变或者添加环境变量    
            int setenv(const char *name, const char *value, int overwrite);
                ovrewrite非0,设置value给name;否则,name不变
        
       3) unsetenv函数:删除环境变量 int unsetenv(const char*name);
            删除时,若系统无此环境变量,也删除,不报错

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
    printf("PATH=%s\n", getenv("PATH"));
    setenv("PATH", "hello", 1);
    printf("PATH=%s\n", getenv("PATH"));
    
    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star星屹程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值