0709C++

类型转换:
int b=static_cast(2.3)://CPP显示转换

构造函数初始化

class myclass{
public :
    int x,y;
    myclass(int a):x(a),y(a){//赋值初始化
    cout<<"构造"<<endl;
    }
};
//构造函数初始化
 myclass my1=5;
 myclass my1(5);
 myclass my3=myclass(5);
 myclass my4=(myclass)5;

explict关键字:禁止隐式转换。
不能隐式转换.

has-A:包含关系
一个类中定义了一个类;
uses-A:
一个类部分使用一个类,通过类之间成员函数相互联系
is-A:
继承:

队列:处理多线程。
互斥解决线程冲突;
事件解决线程通信;
临界区解决线程冲突;
时间同步线程

程序加载的共享库放入stack与heap之间;
环境变量/命令行参数 放入stack与3G之间;
MMU映射基本单位是4K;

不同进程,通用一块内核控件

PCB

进程控制块:task_struct结构体;
主要熟悉:
1.进程id;
2.进程状态;
3.需要恢复的一些寄存器的值;
4.描述控制终端信息;
5.当前工作目录;
6.umask目录
7.文件描述符表(文件描述符可以理解是一个数,句柄,拿着这个数,能够找到这个文件):包含很多指向file结构体的指针;
8.跟信号相关的信息
9.用户id和组id;
10.会话和进程组
11.进程可以使用的资源上限

环境变量

是指在操作系统中用来指定操作系统运行环境的一些参数
①本质:字符串;
②有统一的格式:名=值
③值用来描述进程环境信息
加载位置:与命令行参数类似,位于用户区,高于stack起始位置;
如PATH、
SHELL(命令解析器)、(如date,那么shell解析器解析后,shell去/usr/bin目录下的date,运行date)(收到命令date,解析后,去环境变量目录,在环境目录中一个一个按照$PATH顺序目录里面找。)
/usr/bin/date 则是直接运行date程序;
打印全局变量

extern char **environ;
int main(){
    for(int i=0;environ[i];i++){
        printf("%s\n",environ[i]);
}

环境变量信息

getenv();
setenv();

父进程与子进程还有shell进程,
shell进程正常情况下 执行./a.out的时候,shell退居后台,执行完成后,shell抢占前台。shell不知道子进程(shell、父子进程共用一个终端。)

IPC进程间通信:
进程地址空间相互独立,每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中
通信方式:
1.管道(使用最简单)
pipe:
fifo(有名管道):用于非血缘关系进程间通信
2.信号(开销最小)
3.共享映射区:mmap函数,函数的参数使用注意事项
4.本地套接字(最稳定)

l:符号链接;占用磁盘存储,会记录指向的路径
管道:
1.本质是一个为文件,内核缓冲区;
2.由2个文件描述符引用,一个表示读端,一个表示写端
3.规定数据从管道写端流入管道,读端流出。
管道的原理:管道实质上是内核使用环形队列机制,借助内核缓冲区(4K)实现的。
特点:

子进程也掌握着管道的读写两端,完成父子进程;

为了保证数据的单向流动,可以规定父进程写,子进程读。
人为规定:fd[0]读端,fd[1]写端





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值